ansible-playbook命令格式
执行顺序:从上往下
特性:幂等性 不管执行多少遍,结果都是一样的
1 ansible-playbook [options] playbook.yml [playbook2 ...] 2 -C, --check # 检查,白跑,干跑 3 -f FORKS, --forks=FORKS #用来做并发 4 --list-hosts # 列出主机列表 5 --syntax-check # 语法检查
一、简单用法
新建文件(xxx.yml)配置文件,文件名任意,文件内容如下
1 - hosts: web # 远程主机组 2 tasks: # 执行的任务 3 - name: creategroup # 创建组 4 group: name=Tom # 组名 5 - name: cretaeuser # 创建用户 6 user: name=Andey # 用户名
创建完成之后就可以执行,上述文件包含创建用户组和创建用户两个任务
在执行文件之前有必要检测文件格式的正确性:
执行命令:ansible-playbook--syntax-check 检查语法,
若未报错则继续执行文件:
ansible-playbook xxx.yml 此时会在远程主机上创建响应的用户和用户组
查询用户或用户组是否创建成功:
用户:
命令1:id user
命令2:tail -l /etc/passwd
用户组:tail -l /etc/group
上述配置文件里的用户或用户组的名都是固定的,接下来是传参的用法
二、传参
1 - hosts: web 2 tasks: 3 - name: create{{ user }} 4 user: name={{ user}}
第一种方式 :-e参数
1 ansible-playbook -e 'user=alexsb10' p2.yml
第二种方式:在/etc/ansible/hosts 主机配置文件里直接写入
1 [db] 2 192.168.107.132 user=Tom 3 192.168.107.133 user=Tom
第三种方式:同样在hosts配置文件里:
1 [db:vars] #表示组的参数 2 user=Tom
第四种方式:直接写在ansible的配置文件
1 - hosts: db 2 vars: 3 - user: Tom 4 tasks: 5 - name: create{{ user }} 6 user: name={{ user}}
第五种方式
1 - hosts: db 2 tasks: 3 - name: sum 4 shell: echo 7+8|bc 5 register: user 6 - name: createuser 7 user: name={{user.stdout}}
传参方式的优先级:
-e > playbook vars > hosts文件