2016-11-08 5 views
0

Я пытаюсь получить информацию о сертификате на сервере, чтобы я мог принять меры, если сертификат близок к истечению срока действия. Шаги я принимаю являются:Как сделать поиск информации идемпотент в Ansible?

# Does the certificate already exist? 
- name: certbot | does cert already exist 
    stat: 
    path: "/etc/letsencrypt/live/{{certbot_domain}}//cert.pem" 
    register: certbot_certificate 

# Get the expiration date for the certificate in ISO format. 
- name: certbot | get cert expiration date 
    shell: "date --date=\"$(openssl x509 -in /etc/letsencrypt/live/{{certbot_domain}}/cert.pem -noout -enddate | cut -d= -f 2)\" --iso-8601" 
    register: certbot_expiration_date 
    when: certbot_certificate.stat.exists == True 

# Convert the expiration date into the number of seconds from today. 
- name: certbot | calculating expiration in seconds 
    shell: "echo $(($(date --date={{certbot_expiration_date.stdout}} +%s) - $(date +%s)))" 
    register: certbot_expires_in 
    when: certbot_certificate.stat.exists == True 

Моя проблема заключается в том, что обе команды оболочки всегда помечается как «Изменено» в анзибль, а это означает, что этот сборник пьес не может быть идемпотентна.

Я понимаю, почему это так, потому что Ansible не имеет никакого способа понять, что сделала команда оболочки, поэтому он играет безопасно, говоря «Изменено», но мне интересно, есть ли идемпотентный способ достижение того же результата?

Короткие написания расширения, то есть ... :)

Спасибо.

ответ

0

Ответ, как выясняется, является добавление changed_when о задаче, например:

- name: certbot | get cert expiration date 
    shell: "date --date=\"$(openssl x509 -in /etc/letsencrypt/live/{{certbot_domain}}/cert.pem -noout -enddate | cut -d= -f 2)\" --iso-8601" 
    register: certbot_expiration_date 
    changed_when: False 
    when: certbot_certificate.stat.exists == True 

Так как я знаю, что команды оболочки ничего не меняется, я могу с уверенностью установить changed_when ложь и это гарантирует, что окончательный результат показывает Changed = 0, тем самым делая идемпотент.

 Смежные вопросы

  • Нет связанных вопросов^_^