ansible 运行持续进程及配置环境变量
Linux Ops Ansible ansible 运行持续进程及配置环境变量 配置环境变量 ansible 是通过 ssh 登陆的,同时也是 Non-Login 的方式登陆,这种登陆情况下,部分环境参数是拿不到的。Login 和 Non-Login 的区别可以参考 Difference between Login shell and Non login shell。 那么如果一行 shell 运行的指令需要用到环境参数该怎么处理? 根据 Non-Login shell 调用顺序,~/.bashrc 是会被调用的,所以可以想办法把参数文件写在 ~/.bashrc 中,这样就可以运行 shell。 另一种思路是,不想破坏系统的 ~/.bashrc 文件,或者环境变量本身也是经常变的,那么就自制一个文件,通过 source 启用,设想很好,但是实际操作不行,我这边的环境(ubuntu 18.04 server)提示 source:command not found。有些解释是,ansible 的 shell 不是 bash,没有 bash 的特性。 但 source 的方法不行,还有另一个方法,启用 environment。 --- - hosts: all remote_user: test gather_facts: True tasks: # 在需要环境的任务下,一一指定变量,在执行过程中会导入这些变量 - name: some command need environment shell: cmd: xxx yyy zzz chdir: /your/path environment: ARGS1: 1 ARGS: 2 后台持续运行 后台持续运行的方法很多,正规点的利用 supervisord,systemd 配置一个服务,让服务在后台运行,但这需要配置文件,有没有更好的处理方法,nohup 能否在 ansible 中使用,答案是:可以。 ...