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的配置文件,保存在/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
复制代码
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: ""
复制代码
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能够在playbook切换用户来执行命令。好比须要在root下执行某一个命令,就能够使用become功能。
tasks:
-name: change to root user
become: yes
become_user: root
become_method: sudo
shell: echo "test"
复制代码
关于become有几个注意事项:
首先须要去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。