ansible使用技巧


ansible-playbook,获取当前被控机 ip

 play中设置  gather_facts: true

- name: 集群管理
  gather_facts: true
  hosts: "{{ myhost }}"
  roles:
    - common

使用以下变量获取ip

{{ ansible_facts[‘网卡名称’]['ipv4']['address'] }}

在jinjia2 中获取索引位数

# 先开启一个循环,在循环中找到自己要的值,通过 loop.index 获取对应的索引位置
# loop.index 是从 1 开始计数 loop.index0 是从0开始计数
{% for ip in groups['kafka'] %} {% if ansible_facts[‘网卡名称’]['ipv4']['address'] == ip %}
broker.id={{ loop.index0 }}
{% endif %}
{% endfor %}

jinjia2 列表字符串凭借

# 先声明一个变量,然后把端口和分隔符拼接到一起,通过join进行串联,最后的主机后面添加个端口
{% set str= ':'+zkport+',' %}
zookeeper.connect={{ groups['zookeeper']|join(str) }}:{{ zkport }}

ansible 指定主机组中的单独主机执行 --limit

ansible-playbook -i hosts te.yml --limit 192.168.0.12