AnsibleAPI(一)

457 阅读2分钟

前言

分享学习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 服务。