Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu 设置环境。ansible apt模块中的变量_Ubuntu_Ansible - Fatal编程技术网

Ubuntu 设置环境。ansible apt模块中的变量

Ubuntu 设置环境。ansible apt模块中的变量,ubuntu,ansible,Ubuntu,Ansible,我正在使用ansibleapt模块在Ubuntu主机上安装软件包: --- -name: Install htop apt: name=htop state=present 我现在想安装sudoldap,但我上面所做的操作不起作用: --- -name: Install sudo-ldap apt: name=sudo-ldap state=present 要安装sudo ldap需要事先设置export sudo\u FORCE\u REMOVE=yes。如果我在命令行上执行此操作

我正在使用ansible
apt
模块在Ubuntu主机上安装软件包:

---
-name: Install htop
  apt: name=htop state=present
我现在想安装
sudoldap
,但我上面所做的操作不起作用:

---
-name: Install sudo-ldap
  apt: name=sudo-ldap state=present
要安装
sudo ldap
需要事先设置
export sudo\u FORCE\u REMOVE=yes
。如果我在命令行上执行此操作,我会执行以下操作:

SUDO_FORCE_REMOVE=yes apt-get install -y sudo-ldap
事实上,我在我的ansible任务中使用过:

---
- name: Install sudo-ldap
  shell: SUDO_FORCE_REMOVE=yes apt-get install -y sudo-ldap
  args:
    creates: "/etc/sudo-ldap.conf"
但是必须有更好的方法来设置这个环境变量,这样我就可以直接使用
apt
模块,而不是去shell?

您可以在这样的每个任务上:

---
- name: Install sudo-ldap
  apt: name=sudo-ldap state=present
  environment:
    SUDO_FORCE_REMOVE: yes

我知道它很旧,但是
SUDO\u FORCE\u REMOVE:yes
不起作用。我们可以在这里看到
yes
变成
True

<192.168.33.11> SSH: EXEC ssh -o ControlMaster=auto -o ControlPersist=60s -o     StrictHostKeyChecking=no -o     'IdentityFile=".vagrant/machines/anyserver/virtualbox/private_key"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 -o ControlPath=/home/mrbits/.ansible/cp/ansible-ssh-%h-%p-%r -tt 192.168.33.11 '/bin/sh -c '"'"'sudo -H -S -n -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-vmofyrkeoiwkculfgovhifhhoylkbfrj; **SUDO_FORCE_REMOVE=True** /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1487325724.54-173290784938544/apt.py; rm -rf "/home/vagrant/.ansible/tmp/ansible-tmp-1487325724.54-173290784938544/" > /dev/null 2>&1'"'"'"'"'"'"'"'"' && sleep 0'"'"''
只要我的2美分


干杯

谢谢你,我几乎可以肯定我试过了,但没有成功。我必须用一个新的虚拟机再试一次,因为我已经使用ansible的
shell
模块安装了
sudoldap
。我可能需要一段时间才能明白。对不起,我不理解你关于
变成
的论点。
yes
True
不应该是同一个意思吗?@Sasha,我遇到了与上面相同的问题,使用引号确实解决了问题。Ansible
yes
True
是一样的,但是对于Ansible调用的外部代码,无论是安装程序还是从shell调用的其他程序,都取决于外部程序如何处理
yes
True
。如果外部程序需要
yes
,Ansible需要将变量设置为
yes
。如果没有引号,Ansible将把变量设置为
True
---
- name: Install sudo-ldap
  apt: name=sudo-ldap state=present
  environment:
    SUDO_FORCE_REMOVE: "yes"