2017-07-21 7 views
0

私はCentOS 7マシンをAnsible(v2.1.2)でプロビジョニングしています。そのためには、特定のパッケージのリポジトリで使用可能なバージョンがこのマシンにインストールされていることを確認し、必要に応じてパッケージをインストールし、アップグレード/ダウングレードする必要があります。私は以前yum distro-sync on an

 
- name: install pkg package 
    yum: 
    name: "{{ pkg }}" 
    state: latest 

を走ったが、これは、例えば最新バージョンのみ(Ansibleの特定のバージョンではないとしても、このhttps://github.com/ansible/ansible-modules-core/issues/4229)をインストールしていないだろうダウングレード。

一方、私は

 
- name: install pkg package 
    yum: 
    name: "{{ pkg }}" 
    state: present 

- name: sync pkg version with repo 
    command: yum distro-sync -y "{{ pkg }}" 

を行うことができます。これは、Ansibleは常にディストリビューション同期が実際に何もしていなくてもchanged、としてタスクが表示されますのみ不便で、魔法のように動作します

 
changed: [fake.host.com] => {"changed": true, "cmd": ["yum", "distro-sync", "-y", "mlocate"], "delta": "0:00:00.994328", "end": "2017-07-21 15:58:50.924873", "invocation": {"module_args": {"_raw_params": "yum distro-sync -y \"mlocate\"", "_uses_shell": false, "chdir": null, "creates": null, "executable": null, "removes": null, "warn": true}, "module_name": "command"}, "rc": 0, "start": "2017-07-21 15:58:49.930545", "stderr": "", "stdout": "Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirror.vorboss.net\n * epel: mirrors.coreix.net\n * extras: mirror.vorboss.net\n * updates: ftp.nluug.nl\nNo packages marked for distribution synchronization", "stdout_lines": ["Loaded plugins: fastestmirror", "Loading mirror speeds from cached hostfile", " * base: mirror.vorboss.net", " * epel: mirrors.coreix.net", " * extras: mirror.vorboss.net", " * updates: ftp.nluug.nl", "No packages marked for distribution synchronization"], "warnings": ["Consider using yum module rather than running yum"]} 

変更されたメッセージもAnsible YUM module docsを使用することをお勧めしますが、ディストリビューション同期オプションを持っているように見えていません。

changedの代わりに変更がない場合は、okと表示させる方法はありますか?

答えて

1

あなたのディストリビューションタスクのstdoutを登録し、実際に何かをしたかどうかをchanged_whenで評価できます。

- name: sync pkg version with repo 
    command: yum distro-sync -y "{{ pkg }}" 
    register: yum 
    changed_when: "'No Packages marked for Distribution Synchronization' not in yum.stdout" 

私は「ディストリビューションの同期のためにマークされませパッケージ」は、システム上の異なるないかもしれないので、CentOSの6でテストしていました。

関連する問題