安装

sudo pip install ansible

命令

ansible all -m ping
ansible 127.0.0.1 -a "/sbin/reboot" --become --ask-become-pass

command 模块

# -m是执行模块的名称,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数
ansible all -m command -a 'ss -ntl'
ansible all -m command -a 'chdir=/home/ ls'

shell 模块

ansible all -m shell -a 'cat /etc/passwd | grep "gnome"'

copy 模块

ansible all -m copy -a 'src=~/my.txt dest=~/Documents/my.txt'
ansible all -m copy -a 'content="I am michael\n" dest=~/Documents/hello.txt mode=666'
ansible all -m shell -a 'ls -l ~/Documents/'

file 模块

#创建文件
ansible all -m file -a 'path=~/Documents/app state=directory'
#删除文件
ansible all -m file -a 'path=~/Documents/app state=absent'

fetch 模块,该模块用于从远程某主机获取(复制)文件到本地。

#dest:用来存放文件的目录
#src:在远程拉取的文件,并且必须是一个file,不能是目录
#文件保存的路径是我们设置的接收目录下的被管制主机ip目录下
ansible all -m fetch -a 'src=~/Documents/hello.txt dest=~'

yum or apt 模块

ansible all -m apt -a 'name=htop state=present' --become --ask-become-pass

service 模块

user 模块

group 模块

script 模块

Ansible playbook格式

  1. 文件的第一行应该以 “—” (三个连字符)开始,表明YMAL文件的开始。  
  2. 在同一行中,#之后的内容表示注释,类似于shell,python和ruby。
  3. YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容。
  4. 同一个列表中的元素应该保持相同的缩进。否则会被当做错误处理。
  5. play中hosts,variables,roles,tasks等对象的表示方法都是键值中间以”:”分隔表示,”:”后面还要增加一个空格。

ansible-playbook

ansible-playbook --ask-become-pass mysql.yml