让 Ansible 使用非空 shell 环境
Making Ansible use non-empty shell environment
在执行临时命令或剧本时,我 运行 遇到这样一种情况,需要为临时命令或剧本读取来自 /home/user-that-sudoed/.bashrc
的环境变量在目标清单主机上工作。在 .bashrc
文件中,我们设置了 LD_LIBRARY_PATH
(我们正在使用的一些 Python 函数是必需的)。
/home/local-user/.ansible.cfg
中是否有一个参数可以有效地将“/bin/sh -c
”变成“/bin/sh
”而没有“-c
”? “-c
”(命令 运行 在下方)。
ssh -q -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/tmp/.ansible/sockets/5c2164546a zlpv1229 '/bin/sh -c '"'"'sudo -H -S -n -u atg /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-cyhlvtntyqmbkkmcpkhhkspusdirgwlk; /sites/utils/bin/python'"'"'"'"'"'"'"'"' && sleep 0'"'"''
连接为“user@controller
到user@inventory_host
,然后user@inventory_host
变成'user-that-sudoed
'
Ansible 允许为单个任务使用 environment
关键字设置环境变量
例子
- hosts: all
tasks:
- shell: /opt/local/my-binary
environment:
LD_LIBRARY_PATH: /opt/my/dir/
或者这也可以为剧本设置environment
- hosts: all
environment:
LD_LIBRARY_PATH: /opt/my/dir/
tasks:
…
所以这比尝试按照您建议的方式做更好。
希望对您有所帮助
官方文档:https://docs.ansible.com/ansible/2.6/user_guide/playbooks_environment.html
在执行临时命令或剧本时,我 运行 遇到这样一种情况,需要为临时命令或剧本读取来自 /home/user-that-sudoed/.bashrc
的环境变量在目标清单主机上工作。在 .bashrc
文件中,我们设置了 LD_LIBRARY_PATH
(我们正在使用的一些 Python 函数是必需的)。
/home/local-user/.ansible.cfg
中是否有一个参数可以有效地将“/bin/sh -c
”变成“/bin/sh
”而没有“-c
”? “-c
”(命令 运行 在下方)。
ssh -q -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/tmp/.ansible/sockets/5c2164546a zlpv1229 '/bin/sh -c '"'"'sudo -H -S -n -u atg /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-cyhlvtntyqmbkkmcpkhhkspusdirgwlk; /sites/utils/bin/python'"'"'"'"'"'"'"'"' && sleep 0'"'"''
连接为“user@controller
到user@inventory_host
,然后user@inventory_host
变成'user-that-sudoed
'
Ansible 允许为单个任务使用 environment
关键字设置环境变量
例子
- hosts: all
tasks:
- shell: /opt/local/my-binary
environment:
LD_LIBRARY_PATH: /opt/my/dir/
或者这也可以为剧本设置environment
- hosts: all
environment:
LD_LIBRARY_PATH: /opt/my/dir/
tasks:
…
所以这比尝试按照您建议的方式做更好。
希望对您有所帮助
官方文档:https://docs.ansible.com/ansible/2.6/user_guide/playbooks_environment.html