Ansible奇淫技巧

2018-07-03  本文已影响131人  9c46ece5b7bd

标签和结果注册

# 忽略相关的tags
ansible-playbook  -i hosts -e host=all docker_init.yml --skip=initenv -s

# 执行指定的tags
ansible-playbook  -i hosts -e host=all docker_init.yml --tags=ping -s


# 结果注册
register: result
## 强匹配
when: result.stdout == 'yum.log'
## 弱匹配
when: '"yum.log" in result.stdout'
## 返回状态匹配
when:  result["rc"] !=  0

## 返回执行内容结果
  - name: HOST_DEPLOY_SUCCEED
    shell: "echo {{ inventory_hostname }} is success && date"
    register: result
  - debug: msg="{{result.stdout}}"
    when: result["rc"] ==  0

## 获取注册变量的某个值
when: result.stdout.split(' ')[2] == "30"

任务委派

  - name: host another
    shell: "echo '10.0.0.1 test.jd.com' >> /etc/hosts"
    delegate_to: 10.0.0.2

错误处理

## 忽略错误处理
- name: errors_actions
 command: /bin/false 
 ignore_errors: yes

预定义变量

可使用ansible的gather_facts进行主机的动态变量获取,也可在inventory文件中进行定义

$ cat test
100.96.3.116

## inventory_hostname 默认为inventory文件中的目标主机标识(主机名或ip)
  - name: HOST_DEPLOY_SUCCEED
    shell: "echo {{ inventory_hostname }} is success && date"

收集主机变量

ansible -m setup -a 'filter=ansible_hostname' -i test all
ansible -m setup -a "filter=ansible_default_ipv4" -i test all
上一篇 下一篇

猜你喜欢

热点阅读