ansible剧本

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文件

 

posted @ 2019-02-20 20:13  神神气气  阅读(824)  评论(0编辑  收藏  举报