安装ansible-runner
pip3 install ansible-runner
遇到问题:
-
缺少psutil/_psutil_common.c:9:20: 致命错误:Python.h:没有那个文件或目录
如果是python2环境则需要安装python3-dev,注意一定是安装python3-dev,安装python-dev没有用!!
安装ansible
pip3 install ansible==2.9.17
注意:
-
如果之前使用yum安装了ansible还需要用pip3进行安装,否则找不到依赖
并且一定要是2.9.17版本,因为ceph-ansible暂时不支持ansible2.10以及以上版本
编写代码
-
代码结构如下
main.py为执行代码
代码如下:
import ansible_runner import sys sys.path.append("/usr/local/lib/python3.6/site-packages") #找到ansible-runner依赖 # become_password = getpass.getpass("Please type in the become password: ") # password_dict={"^SSH [pP]assword:$": become_password} extra_dict={"ansible_sudo_pass": "123"} #ceph集群主机密码 #设置运行配置信息 rc = ansible_runner.RunnerConfig(private_data_dir="./private_data_dir/", playbook="/root/project/private_data_dir/project/ceph-ansible-stable-4.0/site.yaml", extravars=extra_dict) rc.prepare() ansible_command = rc.generate_ansible_command() print(ansible_command) print(rc.roles_path) #运行 r = ansible_runner.Runner(config=rc) r.run() # r = ansible_runner.run(private_data_dir="./private_data_dir/", host_pattern='ceph', module='shell', module_args='whoami') #输出结果 print("--------\n") print("{}: {}".format(r.status, r.rc))
private_data_dir存放如下东西:
执行main.py
python3 main.py
遇到问题:
-
TASK [ceph-common : generate ceph configuration file] ************************** fatal: [mon1.ceph.pp.sd.lbn.fr]: FAILED! => {"failed": true, "msg": "module (config_template) is missing interpreter line"} fatal: [mon2.ceph.pp.sd.lbn.fr]: FAILED! => {"failed": true, "msg": "module (config_template) is missing interpreter line"} fatal: [mon3.ceph.pp.sd.lbn.fr]: FAILED! => {"failed": true, "msg": "module (config_template) is missing interpreter line"}
解决办法:
原因是没有修改ansible.cfg中的action_plugin默认路径,需要将默认路径修改为ansible当前工作路径:
此处我就将 /etc/anisble/ansible.cfg中的action_plugins ={ceph-ansible中的actions路径}