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"
Comments | NOTHING