当前位置: 首页>编程语言>正文

如何利用Ansible在远程机器上执行python脚本

Ansible用来做配置管理是极好的, 但是有时配置完成后会需要基于环境做一些验证工作, 用好pip, script这些模块, 其实我们还是可以很方便的做到上面的事情的.

本文是作者在实践时遇到的一些坑以及对应的解决办法, 记录以供参考.

为了顺利的让我们的python脚本在远程环境上运行起来, 我们需要大致做下面几件事:

  1. 配置一个虚拟环境并且安装依赖的第三方package;

    pip 模组本身已经支持virtualenv啦, 所以只要参照下面的写法指定一下virtualenv的路径即可, 比如:

    - name: install python packages
      pip:
        name:
          - xmltodict
          - pytest
        virtualenv: ~/venv/cd_project
    
  2. 基于虚拟环境执行我们的脚本, script模组支持指定executable的路径, 所以这里只要指定一下对应的executor的路径即可, 比如我想用pytest跑某个脚本, 那么就可以写成下面这种:

    - name: run validation script
      script: scripts/test_server.py
      args:
        executable:  ~/venv/cd_project/bin/pytest
      register: pytest_result
      environment:
        MY_MONGODB_URI: "{{ MY_MONGODB_URI }}"
    

    Note:

    • line2: 如果你的script是基于role写作的, 可以在对应的role目录下建一个scripts的目录, 将你的脚本放在对应文件夹, 指定script路径是用相对路径就好

    • line6~7: 如果想在执行脚本时传入某些环境变量(比如邮箱, 密码等), 可以通过environment关键字

    • 如果希望从controller主机上获取某些环境变量, 可以用 {{ lookup('env','variable_name') }}的方式获取, 例如:

        vars:
       MY_MONGODB_URI: "{{ lookup('env','MY_MONGODB_URI') }}"
      

https://www.xamrdz.com/lan/5t31880165.html

相关文章: