Ubuntu apt get未在ansible中注册变量

Ubuntu apt get未在ansible中注册变量,ubuntu,ansible,apt-get,Ubuntu,Ansible,Apt Get,每当我试图在ubuntu上安装这样的软件包(作为一个例子) - name: Install gcc apt: name: gcc state: present allow_unauthenticated: yes register: aptout 不管是否安装了gcc,我都会为aptout获得这个 - debug: msg: "Status is {{ aptout }}" 我想注册此检查,以便在包已使用not aptout.changed和apto

每当我试图在ubuntu上安装这样的软件包(作为一个例子)

- name: Install gcc
  apt:
    name: gcc
    state: present
    allow_unauthenticated: yes
  register: aptout
不管是否安装了gcc,我都会为aptout获得这个

- debug:
    msg: "Status is {{ aptout }}"

我想注册此检查,以便在包已使用
not aptout.changed
aptout.changed
安装时跳过任务,但它似乎没有正确注册变量


这在redhat/centos上运行良好,但无法解决Ubuntu的问题。

一切正常

apt_out = { 'skipped': True,
            'changed': False,
            'skip_reason': u'Conditional check failed'}
Ansible说您的任务尚未运行:
跳过:true
,因为条件为false(为什么不将其包含在示例中?)


因此,它无法猜测是否安装了gcc,因为它没有启动此任务。

一切正常

apt_out = { 'skipped': True,
            'changed': False,
            'skip_reason': u'Conditional check failed'}
Ansible说您的任务尚未运行:
跳过:true
,因为条件为false(为什么不将其包含在示例中?)


因此,它无法猜测是否安装了
gcc
,因为它没有启动此任务。

请发布此事件。如果您不知道应该做什么,那么从这个问题(而不是您当前正在运行的问题)的代码开始,添加一些内容,直到您得到发布的错误。当你得到它时-发布完整的代码(不是你当前运行的完整代码,而是复制问题所需的最少代码)。如果您不知道应该做什么,那么从这个问题(而不是您当前正在运行的问题)的代码开始,添加一些内容,直到您得到发布的错误。当你得到它时,发布完整的代码(不是你当前运行的完整代码,而是复制问题所需的最小代码)。试试你是使用ansible 2.1还是2.2(我使用的是2.1)?问题是,不管是否安装了gcc,它一直在说。如果最初不在服务器上,则不应将其显示为已跳过。@user1165419您使用的是
when
语句,该语句在playbook运行期间被计算为false–这就是跳过任务的原因。删除
when
语句,任务将始终运行,并给出一个
已更改的
值。您是对的。我需要发布完整的剧本,我想现在发生的是,我正在尝试使用相同的变量为ubuntu和centos安装gcc。因此,当我想为ubuntu安装它时,它会安装它(将变量注册为'changed'),然后跳过centos(将相同的变量注册为'skipped'),这就是我们看到的。嗯,需要找到一种方法来避免在跳过任务时注册变量。是的,发布完整上下文总是一个好主意。你可能想读书。或者,如果您有两个平台的许多任务,请阅读并考虑一些类似“代码”的内容:“PraveRe{{ANSIBLYOSOSGROUND } L}} .YML”<代码> >您使用ANUTE 2.1或2.2(我使用2.1)吗?问题是,不管是否安装了gcc,它一直在说。如果最初不在服务器上,则不应将其显示为已跳过。@user1165419您使用的是
when
语句,该语句在playbook运行期间被计算为false–这就是跳过任务的原因。删除
when
语句,任务将始终运行,并给出一个
已更改的
值。您是对的。我需要发布完整的剧本,我想现在发生的是,我正在尝试使用相同的变量为ubuntu和centos安装gcc。因此,当我想为ubuntu安装它时,它会安装它(将变量注册为'changed'),然后跳过centos(将相同的变量注册为'skipped'),这就是我们看到的。嗯,需要找到一种方法来避免在跳过任务时注册变量。是的,发布完整上下文总是一个好主意。你可能想读书。或者,如果您有两个平台的许多任务,请阅读并考虑诸如“代码>”之类的内容:“PraveRe{{ANSIBLYOSOSGROUL}} }。YML”< /代码>。