Ansible入门(一)

修改Ansible hosts文件

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

添加一台机器:bash

[host1]
192.168.1.104
复制代码

添加一个机器组:ui

[host2]
192.168.1.101
192.168.3.44
192.168.5.201
复制代码

添加一台带参数的机器:spa

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

修改ansible.cfg

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

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

[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格式文件。code

---
- 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默认不显示执行的输出,若是须要获取命令执行的结果,能够使用如下方法。token

方法一:string

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。

相关文章
相关标签/搜索