user: name=:指明创建的用户的名字 例如: ansible all -m user -a 'name="user1"' ansible all -m user -a 'name="user1" state=absent'
group: 例如: ansible webserver -m group -a 'name=mysql gid=306 system=yes' ansible webserver -m user -a 'name=mysql uid=306 system=yes group=mysql' copy: src=:定义本地源文件路径 dest=:定义远程目标文件路径 content=:取代src=,表示直接用此处指定的信息生成为目标文件内容 例如: ansible all -m copy -a 'src=/etc/fstab dest=/tmp/fstab.ansible owner=root mode=640' ansible all -m copy -a 'content="Hello Ansible\nHi MageEdu" dest=/tmp/test.ansible'
file:设定文件属性 path=:指定文件路径,可以使用name或dest来替换 创建文件的符号链接: src=:指明源文件 path=:指明符号链接文件路径 例如: ansible all -m file -a 'owner=mysql group=mysql mode=644 path=/tmp/fstab.ansible' ansible all -m file -a 'path=/tmp/fstab.link src=/tmp/fstab.ansible state=link'
ping:测试指定主机是否能连接 例如: ansible all -m ping
service:指定服务运行状态 enabled=:是否开机自动启动,取值为true或者false name=:服务名称 state=:状态,取值有started,stopped,restarted 例如: ansible webserver -a 'service httpd status' ansible webserver -a 'chkconfig --list httpd' ansible webserver -m service -a 'enabled=true name=httpd state=started' shell:在远程主机上运行命令,尤其是用到管道等功能的复杂命令 例如: ansible all -m user -a 'name=user1' ansible all -m command -a 'echo mageedu | passwd --stdin user1' (command模块|管道符无法送过去) ansible all -m shell -a 'echo mageedu | passwd --stdin user1' (有管道或变量最好使用shell模块)
script:将本地脚本复制到远程主机并运行 注意:要使用相对路径指定脚本 例如: ansible all -m script -a "test.sh"
yum:安装程序包 name=:指明要安装的程序包,可以带上版本号 state=:present,latest表示安装,absent表示卸载 例如: ansible all -m yum -a "name=vim"
setup:收集远程主机的facts 每个被管理节点在接收并运行管理命令之前,会将自己主机相关信息,如操作系统版本、IP地址等报告给远程的ansible主机 ansible all -m setup
ansible-playbook预备知识
YMAL语法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表、标量等数据结构。其结构(Structure)通过空格来展示,序列(Sequence)里的项用"-"来代表,Map里的键值对用":"分隔。下面是一个示例。 name: John Smith age: 41 gender: Male spouse: name: Jane Smith age: 37 gender: Female children: - name: Jimmy Smith age: 17 gender: Male - name: Jenny Smith age: 13 gender: Female
YMAL常见的数据类型
list 列表的所有元素均使用”-“开头,例如:
1 2 3 4 5
# A list of stasty fruits - Apple - Orange - Strawberry - Mango
dictionary 字典通过key与value进行标识,例如:
1 2 3 4 5 6 7 8 9
# An employee record name: Example Developer job: Developer skill: Elite
也可以将key: value放置于{}中进行表示,例如: --- # An employee record {name: Example Developer, job: Developer, skill: Elite}