특정 패키지가 존재하지 않는 경우에만 패키지를 설치하도록 Ansible 플레이북을 작성하려고 합니다. 따라서 /tmp/hosted
파일이 존재할 때 설치를 계속하면 안 되지만 실패합니다.
---
- hosts: all
sudo: yes
tasks:
- name: Ensure NTP (for time synchronization) is installed.
yum: name=ntp state=present
args:
creates: "/tmp/hosted"
실수:
[root@ns0 ansible]# ansible-playbook creates.yml -l ansi2
[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and make sure become_method is 'sudo' (default).
This feature will be removed in
a future release. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
PLAY [all] ***********************************************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************************
ok: [ansi2]
TASK [Ensure NTP (for time synchronization) is installed.] ***********************************************************************************************
fatal: [ansi2]: FAILED! => {"changed": false, "failed": true, "msg": "Unsupported parameters for (yum) module: creates. Supported parameters include: conf_file,disable_gpg_check,disablerepo,enablerepo,exclude,install_repoquery,installroot,list,name,skip_broken,state,update_cache,validate_certs"}
to retry, use: --limit @/etc/ansible/creates.retry
PLAY RECAP ***********************************************************************************************************************************************
ansi2 : ok=1 changed=0 unreachable=0 failed=1
답변1
이게 효과가 있을 거야
---
- hosts: all
become: yes
tasks:
- name: Check existence of /tmp/hosted
shell: test -e /tmp/hosted
register: hostedfile
ignore_errors: yes
- name: Ensure NTP (for time synchronization) is installed.
yum: name=ntp state=present
when: hostedfile.rc != 0