6.1.1 Ansible错误处理

最后更新于:2022-04-02 07:45:19

#### 条件判断when中无法使用变量,因为隐式转换,不需要加 ``` # 错误 when: "{{ master_host }} not in ansible_all_ipv4_addresses" # 正确方式 when: master_host not in ansible_all_ipv4_addresses ``` #### shell命令中,双引号的使用 ``` # 错误(会把双引号识别同一个参数,导致cp报错,缺少目的地址) cp -a "{{ go_src_dir }}/go {{ go_install_dir }}/go{{ go_version }}" # 正确 cp -a "{{ go_src_dir }}/go" "{{ go_install_dir }}/go{{ go_version }}" ``` ``` # 错误 (shell多行命令找不到目录) “touch {{ dir }}“ # 正确 touch ”{{ dir }}“ ``` #### 将所操作服务器的IP,初始化到配置中,而不是从主机获取 ``` "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" ``` #### 在模板中使用jinja2的循环,会产生很多空格 ##### 增加中横线[感谢Klaus88](https://my.oschina.net/klausgao/blog/364971)的分享 ``` {%- for server_id,node_ip in zk_cluster -%} {%- if node_ip == zk_hostip -%} {{ server_id }} {%- endif -%} {%- endfor -% ``` ## 直接已知hosts中的ip和主机名 inventory设置 ``` ``` ## 使用远程主机的主机名和ip ``` etcd_hostip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" etcd_hostname: "{{ hostvars[inventory_hostname]['ansible_hostname'] }}" ```
';