17
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ansibleのdry-run時のエラーでdry-runがストップすることを回避

Posted at

例えば、以下のようなplaybookを作成して、ansibleに --check オプションを付与して実行すると

- name: add repo centos 6
  tags:
   - install-zabbix
  yum:
   name: http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
   state: present

- name: install lastest zabbix centos 6
  tags:
   - install-zabbix
  yum: name=zabbix-agent state=latest

以下のようにdry-runでは実際にzabbixのリポジトリはインストールされないために、yumインストールの段階で
No package matching 'zabbix-agent' found available, installed or updated
というエラーが発生してdry-runがストップしてしまう。

TASK [zabbix : add repo centos 6] **********************************************
changed: [ad-ssl6] => {"changed": true, "changes": {"installed": ["/tmp/tmpRmWHYC/zabbix-release-2.4-1
.el6.noarch.rpm"]}, "results": []}

TASK [zabbix : install lastest zabbix centos 6] ********************************
fatal: [ad-ssl6]: FAILED! => {"changed": false, "failed": true, "msg": "No package matching 'zabbix-ag
ent' found available, installed or updated", "rc": 126, "results": ["No package matching 'zabbix-agent
' found available, installed or updated"]}

そこで、以下を参考にして、whenignore_errors を用いてdry-runがストップしないようにする
http://docs.ansible.com/ansible/playbooks_checkmode.html

- name: add repo centos 6  (this task will be skipped in check mode)
  tags:
   - install-zabbix
  yum:
   name: http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
   state: present
  when: not ansible_check_mode

- name: install lastest zabbix centos 6  (this task will be skipped in check mode)
  tags:
   - install-zabbix
  yum: name=zabbix-agent state=latest
  ignore_errors: "{{ ansible_check_mode }}"

zabbixのリポジトリインストールの部分で、
when: not ansible_check_mode でdry-runの判断をさせ、
dry-runの場合は実行せず、それ以外だと実行するように設定。

yumのインストール部分ではdry-run時は必ずエラーが出るため
ignore_errors: "{{ ansible_check_mode }}"
で、dry-run時に発生したエラーの場合は無視するように設定を行う。


そうすると、dry-run実行時以下のようにリポジトリのインストールはスキップされ、
yumインストール時のエラーは無視されるようになり、dry-runが滞りなく進むようになる。

TASK [zabbix : add repo centos 6] **********************************************
skipping: [ad-ssl6] => {"changed": false, "skip_reason": "Conditional check failed", "skipped": true}

TASK [zabbix : install lastest zabbix centos 6] ********************************
fatal: [ad-ssl6]: FAILED! => {"changed": false, "failed": true, "msg": "No package matching 'zabbix-agent' found available, installed or updated", "rc": 126, "results": ["No package matching 'zabbix-agent' found available, installed or updated"]}
...ignoring
17
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?