博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ansible-playbook定义变量与使用
阅读量:4961 次
发布时间:2019-06-12

本文共 5635 字,大约阅读时间需要 18 分钟。

1. ansible-playbook变量定义与使用

  • 命令行
  • 在Inventory中定义
  • 在Playbook中定义
  • 在Role中定义
  • 注册变量(register)
  • 系统信息变量(facts)

2. 在命令行中定义变量

  2.1) 案例编写playbook中定义,变量命令行传参

1 [root@test-1 bin]# vim veriable.yaml 2 [root@test-1 bin]# cat veriable.yaml  3 --- 4 - hosts: web1 5   gather_facts: no 6   remote_user: root 7  8  9   tasks:10   - name: test var11     debug: msg="{
{work_dir}}"

  2.2) 执行playbook变量命令传参

1 [root@test-1 bin]# ansible-playbook veriable.yaml -e work_dir=/usr/local 2  3 PLAY [web1] ****************************************************************************************************************************************************************************************************************************************************************** 4  5 TASK [test var] ************************************************************************************************************************************************************************************************************************************************************** 6 ok: [192.168.200.132] => { 7     "msg": "/usr/local" 8 } 9 ok: [192.168.200.133] => {10     "msg": "/usr/local"11 }12 13 PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************14 192.168.200.132            : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   15 192.168.200.133            : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

3. 在inventory中定义变量

    是在通过hosts文件里定义变量

1 [WebServer]2 app[01:03].imzcy.cn3  4  5 [DB]6 db-[a:c].imzcy.com7  8  9 192.168.109.[131:133]

4. 在Playbook中定义变量

  4.1)编写Playbook定义变量

1 [root@test-1 bin]# vim playbook.yaml  2 [root@test-1 bin]# cat playbook.yaml  3 --- 4 - hosts: web1 5   gather_facts: no 6   remote_user: root 7   vars:  8     - work_dir: /usr/local 9     - nginx_version: 1.1510 11   tasks:12   - name: install nginx13     debug: msg="{
{work_dir}}/nginx/{
{nginx_version}}"

  4.2) 执行playbook配置文件语法检测

1 [root@test-1 bin]# ansible-playbook --syntax-check playbook.yaml 2 3 playbook: playbook.yaml

  4.3) 执行playbook变量文件传参

1 [root@test-1 bin]# ansible-playbook  playbook.yaml  2  3 PLAY [web1] ************************************************************************************************************************************ 4  5 TASK [install nginx] *************************************************************************************************************************** 6 ok: [192.168.200.132] => { 7     "msg": "/usr/local/nginx/1.15" 8 } 9 ok: [192.168.200.133] => {10     "msg": "/usr/local/nginx/1.15"11 }12 13 PLAY RECAP *************************************************************************************************************************************14 192.168.200.132            : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   15 192.168.200.133            : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

5. 在Role中定义

1 [root@test-1 vars]# vim /ansible/roles/nginx/vars/main.yaml 2 [root@test-1 vars]# cat /ansible/roles/nginx/vars/main.yaml 3 ---4 #nginx5 nginx_version: 1.16.16 http_port: 807 server_name: test-www.scajy.cn

6. 注册变量(register)

  6.1)编写register注册变量

1 [root@test-1 bin]# vim register.yaml  2 [root@test-1 bin]# cat register.yaml  3 --- 4 - hosts: web1 5   gather_facts: no 6   remote_user: root 7   vars: 8     - work_dir: /usr/local 9     - nginx_version: 1.15.110 11   tasks:12   - name: register var13     command: date +"%F_%T"14     register: datetime15 16   - name: touch file17     file:18       dest: /tmp/r_{
{datetime.stdout}}19 state: touch

 6.2) 检查语法是否错误

1 [root@test-1 bin]# ansible-playbook --syntax-check register.yaml 2 3 playbook: register.yaml

  6.3) 执行register配置文件

1 [root@test-1 bin]# ansible-playbook register.yaml  2  3 PLAY [web1] ************************************************************************************************************************************ 4  5 TASK [register var] **************************************************************************************************************************** 6 changed: [192.168.200.133] 7 changed: [192.168.200.132] 8  9 TASK [touch file] ******************************************************************************************************************************10 changed: [192.168.200.133]11 changed: [192.168.200.132]12 13 PLAY RECAP *************************************************************************************************************************************14 192.168.200.132            : ok=2    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   15 192.168.200.133            : ok=2    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

  6.4) 验证tmp下是否创建了文件

1 [root@test-1 bin]# ansible web1 -m shell -a "ls -a  /tmp |grep r_*"  2 192.168.200.132 | CHANGED | rc=0 >> 3 apache-tomcat-8.5.38.tar.gz 4 hsperfdata_root 5 r_2019-08-25_11:04:53 6  7  8 192.168.200.133 | CHANGED | rc=0 >> 9 apache-tomcat-8.5.38.tar.gz10 hsperfdata_root11 r_2019-08-25_11:04:53

7. 系统信息变量(facts)

1 ---2 - hosts:webservers3   tasks:4     - debug:5       msg: {
{group_names}} #打印ansible的host组6 - debug:7 msg: {
{inventory_hostname}} #打印详细的host主机8 - debug:9 msg: {
{ansible_hostname}} #配合gather_facts: yes 开启收集系统信息

 

转载于:https://www.cnblogs.com/scajy/p/11555643.html

你可能感兴趣的文章
spring Jdbc自己主动获取主键。
查看>>
百度地图静态库的合成
查看>>
Android Fragment使用
查看>>
Codeforces Round #267 (Div. 2)D(DFS+单词hash+简单DP)
查看>>
Oracle FGA审计记录的清理步骤
查看>>
java中接口的定义与实现
查看>>
论坛上的题目--类似于行列转换的,给出我的方法。
查看>>
python--协程之特别篇
查看>>
C++著名程序库的比较和学习经验(STL.Boost.GUI.XML.网络等等)
查看>>
文件链接的创建与删除
查看>>
桥接模式(Bridge)
查看>>
linux用户权限 -> 系统特殊权限
查看>>
WPF 打印
查看>>
Problem A: 分数类的输出
查看>>
自适应网页设计的方法(转)
查看>>
C++内存管理(转)
查看>>
jquery输入文字,实时字数提示
查看>>
毕业设计
查看>>
二、Redis KEY相关命令
查看>>
Win7上装双系统,完美体验Win8(傻瓜操作,简单易懂,亲测成功)
查看>>