ansible 内置F5 模块,以为直接使用就好,结果发现还是要修改一些
TASK [Add pool member] *******************************************************************************************************************************************************************************************************************
task path: /Users/wangmingyang/Documents/code/ansible/roles/f5/add_member_to_pool.yaml:6
[DEPRECATION WARNING]: Param 'server' is deprecated. See the module docs for more information. This feature will be removed in version 2.9. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[DEPRECATION WARNING]: Param 'user' is deprecated. See the module docs for more information. This feature will be removed in version 2.9. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[DEPRECATION WARNING]: Param 'password' is deprecated. See the module docs for more information. This feature will be removed in version 2.9. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
fatal: [172.16.8.20 -> localhost]: FAILED! => {"changed": false, "msg": "The python f5-sdk module is required"}
to retry, use: --limit
首先是 The python f5-sdk module is required 这个报错
简单pip install f5-sdk 发现没解决问题,翻了翻官方社区,需要
ansible-galaxy install -f f5devcentral.f5ansible,master
然后在playbook 里面引用这个role
然后是会出
build_ssl_validation_error\nansible.module_utils.urls.SSLValidationError: Failed to validate the SSL certificate for 172.16.8.20:443. Make sure your managed systems have a valid CA certificate installed. You can use validate_certs=False if you do not need to confirm the servers identity but this is unsafe and not recommended. Paths checked for this platform: /etc/ssl/certs, /etc/ansible, /usr/local/etc/openssl. The exception msg was: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1056).\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
简化一下就是说证书没有可信签名,这个需要在playbook里面关闭证书验证
最后是ansible 2.7 对循环的语句做了更改,从with_* 更改成直接loop ,从代码上看,更简洁一点,不过我们这些从2.2 开始玩的人就又要更新一遍知识了
最后还是贴一个我简单的例子,添加host 到 pool
---
- hosts: f5
#become: yes
gather_facts: False
roles:
- role: f5devcentral.f5ansible
tasks:
- name: Add pool member
bigip_pool_member:
server: 172.16.1.1
user: admin
validate_certs: False
password: xyz123
state: present
pool: test_new_fe
partition: Common
host: "{{ item }}"
port: 80
loop:
- 172.16.1.2
- 192.168.100.10
delegate_to: localhost
如果想同时添加server 和 ip 和 pool ,用ansible的循环就好,要求ansible 版本在2.7 以上
---
- hosts: f5
#become: yes
gather_facts: False
roles:
- role: f5devcentral.f5ansible
tasks:
- name: Add pool member
bigip_pool_member:
server: 172.16.1.1
user: admin
validate_certs: False
password: xyz123
state: present
pool: "{{ item.pools }}"
partition: Common
host: "{{ item.name }}"
port: 80
loop:
- { name: 'testserver01', groups: 'wheel' , pools: 'xyz01 ' }
- { name: 'testserver01', groups: 'wheel' , pools: 'xyz02 ' }
delegate_to: localhost