ansible很亮的功能之一就是role, 我们可以将不同分类的task 归类之后放到一个相同的role中,方便管理,方便重用
一个简单的role:
1 2 3 4 |
roles/ `-- test `-- tasks `-- main.yml |
是的,有一个role 名字叫 test ,test这个role下只有一个文件夹,tasks, 只有一个yml文件,内容为:
1 2 3 4 5 6 7 8 |
--- - name: debug some info debug: var=test1 - name: debug some info2 debug: var=test2 |
这是一个特殊的例子, 因为是测试用的,所以,不需要太多的文件,正常的role应该是这个样子的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
ansible_home/ ├── main.yml └── roles ├── common │ ├── defaults │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ ├── templates │ └── vars ├── dbservers │ ├── defaults │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ ├── templates │ └── vars └── webservers ├── defaults ├── files ├── handlers ├── meta ├── tasks │ ├── apache_conf.yml │ ├── apache_vhost_conf.yml │ └── main.yml ├── templates │ ├── apache_conf.j2 │ └── apache_vhost.conf.j2 └── vars └── main.yml |
好了,我们说说为什么要传递变量个role , 因为如果我们想给role设置变量,只需要再创建一个vars文件夹在 test文件夹下,然后在vars下增加一个main.yml 把我们的值写到里边,role中使用就可以了,但是,有时候,我们需要测试一些东西的时候,需要不使用默认值,或者需要临时增加新的值,我们只需要在引入role的时候将变量一并传递给role就可以了
第一种格式:
1 2 3 4 5 6 7 8 9 |
--- - hosts: localhost remote_user: zhiming roles: - role: test vvvv_1: 'ah' test1: 'this is test1' test2: 'this is test2' |
第二种格式:
1 2 3 4 5 6 7 |
--- - hosts: localhost remote_user: zhiming roles: - {role: "test", vvvv_1: "ah" , test1: "this is test1", } |
大家随意, 第一种略显清晰
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021
nige 2018/02/06 14:56
胖子写的不错, ansible roles 传参 搜索的头条
Zhiming Zhang 博主 2018/02/06 15:22
@ 说谁胖子呢?啊!!!!!!!