前言
分享学习ansible api的过程。
环境部署
为了避免与当前环境下的python3出现冲突,重新建立一个python3的虚拟环境,本文用的linux系统是centos7。
安装虚拟环境
首先查看你的python3的PATH变量指定的路径,使用找到的路径在当前目录下创建在当前目录下名称为 py3 的环境。

virtualenv --python=/usr/bin/python3 py3
source py3/bin/activate # 加载环境
注意:如果如果 virtualenv 命令不存在,请手动安装。命令为:
sudo pip3 install virtualenv
安装项目所需模块
这里我会把模块写在requirements.txt文件中,安装所需模块的命令如下:
pip3 install -r requirements.txt
其中,文件内容如下:
amqp==2.4.2
ansible==2.7.10
asn1crypto==0.24.0
backcall==0.1.0
bcrypt==3.1.6
billiard==3.6.0.0
celery==4.3.0
cffi==1.12.3
cryptography==2.4.2
decorator==4.4.0
Django==2.1.8
idna==2.8
ipython==7.5.0
ipython-genutils==0.2.0
jedi==0.13.3
Jinja2==2.10.1
kombu==4.5.0
MarkupSafe==1.1.1
mysqlclient==1.4.2.post1
paramiko==2.4.2
parso==0.4.0
pexpect==4.7.0
pickleshare==0.7.5
prompt-toolkit==2.0.9
ptyprocess==0.6.0
pyasn1==0.4.5
pycparser==2.19
Pygments==2.4.0
PyNaCl==1.3.0
pytz==2019.1
PyYAML==5.1
redis==3.2.1
six==1.12.0
sqlparse==0.3.0
traitlets==4.3.2
vine==1.3.0
wcwidth==0.1.7
需要注意的地方
这边我用的ansible版本是2.7.10,需要注意的是,ansible的版本以及django的版本的不一致会导致api接口的调用失败,一般建议安装ansible版本为2.4以上。
查看ansible是否正常工作
在虚拟环境中,已经安装了ansible模块,我们可以进行以下操作来查看ansible是否正常工作。ansible localhost -m ping
以下输出为成功

通过ansible来安装redis
redis 在项目中作为 celery 异步操作的中间人、临时结果存储和 ansible 结果存储的插件。
在这个项目中,我会用到redis,包括celery(具体下面再分析)。所以在这里可以尝试通过ansible来安装redis,进一步来了解ansible的作用以及操作。
我们在当前路径下创建playbooks/redis_opt.yml,文件内容下:
# 安装启动 Redis
- hosts: localhost
become: yes
become_method: sudo
tasks:
- name: 检测redis-server文件是否存在
file:
path: /usr/bin/redis-server
state: file
ignore_errors: True
register: redis_ser_file
- name: 安装redis
shell: apt -y install redis-server
when: redis_ser_file is failed
- name: Redis配置文件
copy:
dest: /tmp/redis.conf
content: "bind 127.0.0.1\ndaemonize yes\nport 6379"
- name: 检测 Redis 服务是否已启动
shell: /usr/bin/redis-cli quit
ignore_errors: True
register: redis_running
- name: 启动Redis服务,如果 redis 未启动
shell: redis-server /tmp/redis.conf
when: redis_running is failed
ansible 通过 playbook(统一名称,代表包含一组任务的文件)定义一个任务组,任务组包括所有需要的操作,写在一个 .yml 文件中,文件编辑需遵循 yml 文件格式。
执行命令:ansible-playbook playbooks/redis_opt.yml,即可在当前环境中安装 redis 服务。