Ansible入门(一)

栏目: 服务器 · 发布时间: 6年前

内容简介:Ansible的hosts文件在/etc/ansible目录下,在hosts中添加你需要管理的远程主机的信息后,ansible才可以顺利的管理这些机器。添加一台机器:添加一个机器组:

Ansible的hosts文件在/etc/ansible目录下,在hosts中添加你需要管理的远程主机的信息后,ansible才可以顺利的管理这些机器。

添加一台机器:

[host1]
192.168.1.104
复制代码

添加一个机器组:

[host2]
192.168.1.101
192.168.3.44
192.168.5.201
复制代码

添加一台带参数的机器:

[host3]
192.168.5.67 ansible_sudo_pass='123'
复制代码

修改ansible.cfg

ansible.cfg是Ansible的配置文件,保存在/etc/ansible目录下。如果需要使用become进行权限切换,或者生成日志等功能,就需要修改ansible.cfg中的设置。

设置切换用户时询问密码:

[privilege_escalation]
#become=True
#become_method=sudo
#become_user=root
become_ask_pass=True
复制代码

设置生成日志:

log_path = /etc/ansible/log/ansible.log
复制代码

编写Ansible-playbook

Playbook是yaml格式文件。

---
- name: say 'hello world'
  hosts: host1                      #要执行playbook的机器或机器组,在hosts文件中设置
  tasks:
    - name: echo 'hello world'      #Task的名称
    command: echo 'hello world'     #Task执行的Module,除command外还可以是shell,copy,apt等
    register: result                

    - name: print stdout
    debug:
      msg: ""
复制代码

显示playbook中命令结果

ansible-playbook默认不显示执行的输出,如果需要获取命令执行的结果,可以使用以下方法。

方法一:

ansible-playbook -v test.yaml
复制代码

使用"-v"参数使playbook输出全部的运行结果,但这样输出会非常多,格式也比较乱。

方法二:

tasks:
-name: test 
 shell: echo "just test"
 register: test_output

-name: show output
 debug: var=test_output.stdout verbosity=0
复制代码

使用register将命令的输出结果保存为变量,然后使用debug module将变量输出。这种方法可以方便的获取命令的运行结果。

使用become切换用户

在使用become可以在playbook切换用户来执行命令。比如需要在root下执行某一个命令,就可以使用become功能。

tasks:
-name: change to root user
 become: yes
 become_user: root
 become_method: sudo
 shell: echo "test"
复制代码

关于become有几个注意事项:

  • 如果become的某个选项没有配置的话,会使用ansible.cfg中的设置。比如默认become_user是test,那么在不指定become_user,但是become: yes的话,会默认切换到test用户。
  • 在ansible.cfg中将become_ask_pass设置为True,这样在执行playbook前需要输入要切换的用户的密码。比如要切换到root用户,就需要输入root用户的密码。如果不这样设置,会切换不成功导致执行失败,且失败信息是等待超时。
  • 在become完成后必须要有操作module,也就是说不能只执行become,否则会报错“ERROR! no action detected in task”
  • 切换只在这一个Task中生效,下一个Task也需要切换用户执行的话,需要重新执行become操作

使用Ansible与Slack交互

首先需要去slack中申请一个App,然后记下生成的token。在yaml文件中只需要加入下面一段代码就可以向slack发送信息。

- name: send notification to slack
    slack:
        token: 'AAAAAA/BBBBBBB/CCCCCCCC'    #申请的App的token
        msg: 'just test'
        username: 'test_user'
    delegate_to: localhost                  #指派给localhost执行这段代码
复制代码

delegate_to可以将一个task分配给特定的主机执行,通过delegate_to可以在一个playbook让不同的机器执行不同的task。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

产品经理手册(原书第4版)(白金版)

产品经理手册(原书第4版)(白金版)

[美] 琳达·哥乔斯(Linda Gorchels) / 祝亚雄、冯华丽、金骆彬 / 机械工业出版社 / 2017-8 / 65.00

产品经理的职责起点是新产品开发,贯穿产品生命周期的全过程。本书按上下游产品管理进行组织。 在上游的新产品开发流程中,作者阐述了如何从市场、产品、行业、公司的角度规划企划方案,并获得老板、销售部、运营部的资源支持,推进新产品的项目流程,实现所有目标,制定和实施新产品发布。 下游产品的管理核心在于生命周期的管理,营销更是生命周期管理的重中之重。产品经理如何让产品满足客户需求,让客户获得对产......一起来看看 《产品经理手册(原书第4版)(白金版)》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具