ansible 模块开发 1

发布于 2022-06-06  8 次阅读


python 版本:3.10.4

安装python

控制端与被控端均安装
curl http://download.beyourself.org.cn/py3104.sh |sh

控制端

pip3 install ansible
# 可以使用ANSIBLE_LIBRARY环境变量来指定模块的存放位置,也可以在playbook当前目录下创建library目录。
mkdir /opt/library
export ANSIBLE_LIBRARY=/opt/library # 添加登录生效

编写模块

vim /opt/library/mariadb_install.py

#!/usr/bin/python3
from ansible.module_utils.basic import AnsibleModule
import subprocess

def main():
    module = AnsibleModule(
        argument_spec=dict(
            level = dict(Required=True, type='str'),
            state = dict(Required=True, type='str'),
        )
    )
    if module.params['state'] == 'present':
        subprocess.getoutput(f'yum install -y mariadb mariadb-server && systemctl start mariadb && systemctl enable mariadb && echo {module.params["level"]} >> /tmp/log.log')
        module.exit_json(changed=True)

    elif module.params['state'] == 'absent':
        subprocess.getoutput('systemctl stop mariadb && yum erase -y mariadb mariadb-server')
        module.exit_json(changed=True)

    else:
        module.exit_json(changed=False)

main()

使用模块

通过ansible_hoc执行

# 由于这里使用python3解释器,需要执行解释器位置
ansible -i /opt/library/hosts 127.0.0.1 -m install -a "level=1.2.3 state='present'" -e 'ansible_python_interpreter=/usr/bin/python3'

通过ansible_playbook执行

---
- hosts: 127.0.0.1
  gather_facts: no
  vars:
    ansible_python_interpreter: /usr/local/python3.10.4/bin/python3
  tasks:
  - name: "install mariadb"
    install: level="1.2.4" state="absent"