Ansible: [рдЪреЗрддрд╛рд╡рдиреА]: рдЬрдм рдХрдердиреЛрдВ рдореЗрдВ jinja2 рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рд╕реАрдорд╛рдВрдХрдХ рдЬреИрд╕реЗ {{}} рдпрд╛ {%%} рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 8 рдорд╛рд░реНрдЪ 2017  ┬╖  31рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ansible/ansible

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░

  • рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ
рдШрдЯрдХ рдХрд╛ рдирд╛рдо
рдЙрддреНрддрд░ рд╕рдВрд╕реНрдХрд░рдг
$ ansible --version
ansible 2.3.0 (devel a8910e78ca) last updated 2017/03/08 02:46:53 (GMT -500)
  config file =
  configured module search path = Default w/o overrides
  python version = 2.7.10 (default, Jul 30 2016, 19:40:32) [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)]
рд╡рд┐рдиреНрдпрд╛рд╕


рд╢реЗрдпрд░ ansible.cfg

рдУрдПрд╕ / рдкрд░реНрдпрд╛рд╡рд░рдг


рдкреНрд░рдмрдВрдзрди рдореЗрдЬрдмрд╛рди macOS 10.12.3

рд╕рд╛рд░рд╛рдВрд╢


рдЯрд╛рд╕реНрдХ рдореИрдВ 7 рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдлреЗрдВрдХрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред

рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛

- name: install powershell
  win_chocolatey:
    name: '{{ item }}'
    state: 'present'
    upgrade: True
  with_items:
    - "powershell"
  register: check_powershell5
  when: "{{ ansible_PSVersionTable.Major|int < 5 }}"
  tags: win_powershell
рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо


рдХрд╛рд░реНрдп рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд┐рдирд╛ рдЪрд▓реЗрдЧрд╛

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо

TASK [win_powershell : install powershell] *************************************
 [WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ ansible_PSVersionTable.Major|int < 5 }}

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЖрдк рдЗрд╕ рдирдП рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╕рд╛рд░реНрдердХ рдкреНрд▓реЗрдмреБрдХ рдХреИрд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред Ansible рдХрд╛ рдкреВрд░рд╛ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдореМрдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рднрд╛рд╡реБрдХ рд╣реЛрдиреЗ рдкрд░ рдмрджрд╕реВрд░рдд рдХреЗ рд╕рд╛рде рдлреНрд▓реИрдЯ рдкреНрд▓реЗрдмреБрдХ рдирд╣реАрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред

рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ:

рдЪреВрдХ

auth_service       : none
auth_service_aws   : aws
auth_service_is_aws: '{{ (auth_service == auth_service_aws) | bool }}'

рдореЗрдЯрд╛

dependencies:

  - { role: apollo/auth/aws, when: auth_service_is_aws }

рдЪреЗрддрд╛рд╡рдиреА рдлреЗрдВрдХрддрд╛ рд╣реИтАжред

рдФрд░ рдЕрдВрдд рдореЗрдВ (рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ!)

рдореВрд▓ рднреВрдорд┐рдХрд╛ - рдЪреВрдХ

bootstrap_ping : true

рдореВрд▓ рднреВрдорд┐рдХрд╛ - рдореЗрдЯрд╛

dependencies:

  - { role: apollo/platform/ping, ping: '{{ bootstrap_ping }}' }

рдмрд╛рд▓ рднреВрдорд┐рдХрд╛ - рдХрд╛рд░реНрдп

- name: execute

  when: ping

  win_ping:

рдореБрдЭреЗ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рдмреЗрд╡рдХреВрдл рд╣реЛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╛ рддреЛ рдХреБрдЫ рд╕рд░рд▓ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╡рд╛рдкрд╕ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рднреА 31 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ 2.3 рд░рд┐рд▓реАрдЬ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ jinja2 рдбреЗрд▓рд┐рдорд┐рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП:

when: ansible_PSVersionTable.Major|int < 5

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдФрд░ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

рдЬрдм рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреЛ рднреА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╛рдЯрдХреЛрдВ рдореЗрдВ рдкрд░рд╕реНрдкрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рддреЛ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВред

рдЙрджрд╛рд╣рд░рдг: mycondition: ansible_PSVersionTable.Major|int < 5 рдХрд╛ рдЙрдкрдпреЛрдЧ when: mycondition рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
-> рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ mycondition рдореВрд▓реНрдпрд╛рдВрдХрди / рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдХрд╛рд░реНрдп mycondition: "{{ ansible_PSVersionTable.Major|int < 5 }}" рдпрд╛ when: "{{ mycondition }}" рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рдЙрдкрд░реЛрдХреНрдд рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реЛрдВрдЧреЗред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

  when: "(ansible_PSVersionTable.Major|int < 5) and ('Microsoft Windows 7' in ansible_distribution)"

рд╕рд╛рде рдореЗрдВ

$ ansible --version
ansible 2.4.0 (devel 53c52cf65f) last updated 2017/03/30 07:29:39 (GMT -500)
  config file =
  configured module search path = [u'/Users/tanner/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  python version = 2.7.10 (default, Jul 30 2016, 19:40:32) [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)]

рд╡рд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рд╣рд╛рд▓рдд рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

ansible_PSVersionTable рдПрдХ рдХрд╕реНрдЯрдо рддрдереНрдп рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд╕рднреА рд╡рд┐рдВрдбреЛ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕реНрдерд┐рддрд┐ true ):

mycond: "(ansible_PSVersionTable.Major|int < 5) and ('Microsoft Windows 7' in ansible_distribution)"
...
when: mycond

рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдкрдХреЛ "{{...}}" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ 'рдЬрдм' рд╕реНрдерд┐рддрд┐ рдЬрд╣рд╛рдВ "{{....}}" рдирд┐рд╣рд┐рдд рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ | рд╡рд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреВрд▓ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдмреВрд▓рд┐рдпрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣реА рдореИрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдБ ... рдЖрдкрдХреЛ рдпрд╛ рддреЛ "{{...}}" рдЪрд░ рдШреЛрд╖рдгрд╛ рдХреЗ рднреАрддрд░ рдпрд╛ рдЬрдм рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рд╕рд╣реА рдврдВрдЧ рд╕реЗ) рдЕрдиреНрдпрдерд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реЗрдЧреАред

рдЖрдк рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ:

- set_fact: content1="{{ var1.stdout }}" content2="{{ var2.stdout }}" рдФрд░ рддреБрд▓рдирд╛ рдХрд░реЗрдВред

рд╕рдВрднрд╡рддрдГ # реирейрелред рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛

рдореИрдВ рднреА рдЗрд╕рд╕реЗ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рд╣реВрдВред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдм рд╣рдо "{{ myvar }}" рдпрд╛ {{ myvar }} рдмрдЬрд╛рдп myvar рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЕрднреА рднреА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

when: myvar.stdout != ansible_date_time.date

^ рдпрд╣ рд╡рд░реНрддрдорд╛рди рддрд┐рдерд┐ (YYYY-MM-DD) рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди jinja2 рдХреБрдЫ рдХреЗ рд╕рд╛рде рд╕реАрдорд╛рдВрдХрдХ:

- set_fact:
    ansible_date: "{{ ansible_date_time.date }}"

рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

- name: "TEST: The files directory should have correct ownership"
  shell: stat -c %U:%G {{ files_dir }}
  register: styles_dir_ownership
  changed_when: styles_dir_ownership.stdout != "{{ user }}:{{ apache_user }}"
  failed_when: styles_dir_ownership.stdout != "{{ user }}:{{ apache_user }}"

рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ user:apache_user рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрдХ рдЙрдкрдирд┐рд╡реЗрд╢ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЙрджрд╛ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдирд╛ рд╣реИ

- set_fact:
    expected_ownership: "{{ user }}:{{ apache_user }}"

рддреЛ рдореЗрд░рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ: рдореИрдВ рдЙрди 2 рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдЦрд╛рддрд╛ рд╣реВрдБ рдЕрдЧрд░ jinja2 delimiters рдХреЛ рдЕрдВрд╕рд╛рд░реА 2.3 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдХреНрдпрд╛ set_fact рдЕрдм рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ?

рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдЬреЛрдбрд╝рдирд╛:

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

to_be_removed_users:
  - name: 'adm'
    remove: False 
  - name: 'ftp'
    remove: True
  - name: 'games'
    remove: False  
  - name: 'gopher'
    remove: True
  - name: 'operator'
    remove: False
  - name: 'uucp'
    remove: True

рддрдм рдирд┐рдореНрди рдХрд╛рд░реНрдп рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдЗрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛рдП редрдирд╛рдо рд╕реВрдЪреА рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ

`` `
рдирд╛рдо: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
getent:
рдбреЗрдЯрд╛рдмреЗрд╕: рдкрд╛рд╕рд╡рд╛рд░реНрдб
рдЯреИрдЧ:
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛

  • рдирд╛рдо: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдЯрд╛ рджрд┐рдП рдЧрдП рд╣реИрдВ
    рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛:
    рдирд╛рдо: "{{item.name}}"
    рд░рд╛рдЬреНрдп: рдЕрдиреБрдкрд╕реНрдерд┐рдд
    рдирд┐рдХрд╛рд▓реЗрдВ: "{{item.remove}}"
    with_items: '{{to_be_removed_users}}'
    рдЬрдм: getent_passwdред {{item.name}} рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
    рдЯреИрдЧ:

    • userdel

      `` `

@PhilEv , рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рд╕рд╣реА рдЬрд╛рдБрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ):

`` `---

  • рдореЗрдЬрдмрд╛рди:

    • рд╕реНрдерд╛рдиреАрдп рд╣реЛрд╕реНрдЯ

      рдХрд╛рд░реНрдп:

    • set_fact:

      рд░рдВрдЧ рдХреА:

      рд▓рд╛рд▓: рд╕рдЪ рд╣реИ

      BLUE: рд╕рдЪ рд╣реИ

      рдпреЗрд▓реНрд▓реЛ: рдЧрд▓рдд

- name: Favourite colours!
  command: echo "I like {{ item }}"
  # when: COLOURS.{{item}} is defined and COLOURS.{{item}}
  when: item in COLOURS and COLOURS[item]
  with_items:
    - "GREEN"
    - "BLUE"
    - "PURPLE"
    - "YELLOW"```

рд╣рдо рдЗрди рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рднреА рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ when рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ jinja рд╕реАрдорд╛рдВрдХрдХ рдХреЛ рд╣рдЯрд╛ рд░рд╣реЗ рд╣реИрдВ:

- name: Check if redis is installed
  shell: redis-server --version || /bin/true
  register: redis_is_installed

- include: redis_build.yml
  when: "redis_is_installed.stdout.find('v={{ redis_version }}') == -1"

рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реБрдЭрд╛рд╡?

@jsuter

when: "redis_is_installed.stdout.find('v=' ~ redis_version) == -1"

@sivel рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛, рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЯрд┐рд▓реНрдб рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдбреЙрдХреНрд╕ рдирд╣реАрдВ рдорд┐рд▓реЗрдВрдЧреЗ рдФрд░ рдкрдврд╝рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред

@jsuter http://jinja.pocoo.org/docs/dev/templates/#other -operators

~
рд╕рднреА рдСрдкрд░реЗрдВрдбреНрд╕ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдореЗрдЯрддрд╛ рд╣реИред

{{"рд╣реИрд▓реЛ" ~ рдирд╛рдо ~ "!" }} рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ (рдорд╛рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдирд╛рдо 'рдЬреЙрди' рдкрд░ рд╕реЗрдЯ рд╣реИ) рд╣реИрд▓реЛ рдЬреЙрди!

рдзрдиреНрдпрд╡рд╛рдж @streetster рдХреЛ ansible group рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдзрдиреНрдпрд╡рд╛рдж @sivel рдФрд░ рдЬреЛрд╢)

when: getent_passwd[item['name']] is defined
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдЕрдЪреНрдЫрд╛ рдерд╛

рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЖрдк рдЗрд╕ рдирдП рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╕рд╛рд░реНрдердХ рдкреНрд▓реЗрдмреБрдХ рдХреИрд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред Ansible рдХрд╛ рдкреВрд░рд╛ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдореМрдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рднрд╛рд╡реБрдХ рд╣реЛрдиреЗ рдкрд░ рдмрджрд╕реВрд░рдд рдХреЗ рд╕рд╛рде рдлреНрд▓реИрдЯ рдкреНрд▓реЗрдмреБрдХ рдирд╣реАрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред

рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ:

рдЪреВрдХ

auth_service       : none
auth_service_aws   : aws
auth_service_is_aws: '{{ (auth_service == auth_service_aws) | bool }}'

рдореЗрдЯрд╛

dependencies:

  - { role: apollo/auth/aws, when: auth_service_is_aws }

рдЪреЗрддрд╛рд╡рдиреА рдлреЗрдВрдХрддрд╛ рд╣реИтАжред

рдФрд░ рдЕрдВрдд рдореЗрдВ (рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ!)

рдореВрд▓ рднреВрдорд┐рдХрд╛ - рдЪреВрдХ

bootstrap_ping : true

рдореВрд▓ рднреВрдорд┐рдХрд╛ - рдореЗрдЯрд╛

dependencies:

  - { role: apollo/platform/ping, ping: '{{ bootstrap_ping }}' }

рдмрд╛рд▓ рднреВрдорд┐рдХрд╛ - рдХрд╛рд░реНрдп

- name: execute

  when: ping

  win_ping:

рдореБрдЭреЗ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рдмреЗрд╡рдХреВрдл рд╣реЛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╛ рддреЛ рдХреБрдЫ рд╕рд░рд▓ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╡рд╛рдкрд╕ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рднреА рдЙрд▓рдЭрди рдореЗрдВ рд░рдВрдЧред рдЕрдиреНрд╕рд┐рдмрд▓ рдореЗрдВ рдмрд╛рдХреА рд╕рдм, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд┐рдиреНрдЬрд╛ рдбреЗрд▓рд┐рдореЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред "Change_when" рдФрд░ рдмрд╛рдХреА рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ? рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЛрд▓рдирд╛ рдЬреЛ рдЕрдВрд╕рд┐рдмрд▓ рд╕реАрдЦ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдордЭрдирд╛ рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдкреАрдЖрд░ рдХреЗ рдКрдкрд░ рджреЗрдЦреЗрдВред рдореИрдВ рд╢рд╛рдпрдж рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдордЫрд▓реА рдХреЛ рдердкреНрдкрдбрд╝ рдорд╛рд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд▓реЛрдЧреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рд╕рдорд░реНрдерди рджрд┐рдЦрд╛рдПрдВ рдФрд░ рд╢рд╛рдпрдж рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрд╛ рддреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рджреНрд╡рд╛рд░рд╛)ред

https://github.com/ansible/ansible/pull/24974

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП! рд╣рдо рдЬрд╛рджреВрдЧрд░ рдирд╣реАрдВ рд╣реИрдВред рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдЕрдм рд╕рднреА рдЬрдЧрд╣ рдорд┐рд▓ рдЬрд╛рддреА рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рднреВрдорд┐рдХрд╛ рд╣реИ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ 'рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд' рд╣реИ рдЬрдм рдЗрд╕ рдЪрд░ рдХреЛ meta/main.yml рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдХреБрдЫ рдЪрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ

dependencies:
  - role: generic_role
    _configuration_needed: "{{custom_configuration_needed}}"

custom_configuration_needed рддрдм рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ рдпрд╛ рд╡рд┐рд╢реЗрд╖ рднреВрдорд┐рдХрд╛ рд╕рд╣рд┐рдд рдЬрдм рдкреНрд░рддрд┐-рд╣реЛрд╕реНрдЯ рдпрд╛ рдкреНрд░рддрд┐-рд╕рдореВрд╣ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдлрд┐рд░, рд╕рд╛рдорд╛рдиреНрдп рднреВрдорд┐рдХрд╛ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрджрдо рд╣реИрдВ:

- name: "configure package if necessary"
  include: configure.yml
  when: _configuration_needed

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдм рдореИрдВ рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд configure.yml " рдореЗрдВ рд╣рд░ рдПрдХ рдХрджрдо рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдБ:

   [WARNING]: when statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: {{custom_configuration_needed}}
 ```

This is due to the implicit 'when' clause that's added to every step in that included file, but I'm not sure how to solve this-one. The `_configuration_needed` isn't the only case, it's just the one spamming most warnings right now. Now for this `_configuration_needed` I tried defining the dependency like this:

рдирд┐рд░реНрднрд░рддрд╛:

  • рднреВрдорд┐рдХрд╛: generic_role
    _configuration_needed: custom_configuration_needed
    `` `

рдпрд╣ рддрдм рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрдм рд╕реЗ рдореИрдВ рдЙрд╕ _configuration_needed рдЪрд░ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЗрд╕ "custom_configuration_needed" рдХреЛ (рдПрдХ рдЧреИрд░-рд░рд┐рдХреНрдд) рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЬреЛ рд╣рдореЗрд╢рд╛ "True" рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдпрд╛ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрди рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдПред

рдпрджрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрди рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рднреА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ - рдЕрднреА рджрдлрди рдХрд░реЗрдВ, рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, 3 рдирдВрдмрд░ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдмреЛрд░реНрдб рдХреЗ рдкрд╛рд░ рдЬрд┐рдВрдЧрд╛ рдЯреЗрдореНрдкреНрд▓рдЯрд┐рдВрдЧ рдХреЛ рд╕реБрд╕рдВрдЧрдд рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╣рд░ рдЬрдЧрд╣ рдпрд╛ рдХрд╣реАрдВ рднреА {{}} , рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рджрд╛ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╣реИред

рдореИрдВ {{}} рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдбрд╛рдпрдирд╛рдорд┐рдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЧреНрд░рд╣рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдореБрдЭреЗ рдпрд╣ рдХрд╛рд░реНрдп рдХрд░реНрд▓реА рдХреЛрд╖реНрдардХ рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛:

vars:
    host_name: ['foo', 'bar']
    foo_wwn_2: "This exist"

  tasks:
    - debug:
        var: "{{item.1}}_wwn_{{item.0}}"
     when: ({{item.1 + '_wwn_' + item.0}}) is defined
      with_nested:
        - ['1', '2']
        - "{{host_name}}"

рдХреЛрд╖реНрдардХ рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдЬрд┐рд╕реЗ TRUE рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣ рджреЗрдЦрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рд╣реИ рдХрд┐ рдЖрдк when рднреАрддрд░ рдЪрд░ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ @bartmeuris , рдЪреЗрддрд╛рд╡рдиреА рдЕрдм v2.4 рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧреА рдЬреЛ рдЬрд▓реНрдж рд╣реА рдЬрд╛рд░реА рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реИ

@MichalTaratuta рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдмрдЬрд╛рдп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд:

when: vars[item.1 ~ '_wnn_' ~ item.0] is defined

рдпрд╣ рддрдереНрдп рдХрд┐ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдиреЗ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛ рд╡рд╣ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдерд╛, рдФрд░ рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░ рдирд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИред

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдПрдХ рдЪрд░ рд╣реЛрддрд╛ рд╣реИ?

vars:
  acct:
    name: example_name

tasks:
  - name: Emergency Account | Gather list of usernames
    ios_command:
      commands: show run | i ^username
    register: ios_usernames

  - name: Emergency Account | Remove non-emergency account users
    ios_config:
      lines:
        - no {{ item }}
    with_flattened:
      - "{{ ios_usernames.stdout_lines }}"
    when: '"username {{ acct.name }} privilege 0 secret" not in item'
    no_log: True

рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдореИрдВ рдмрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рдпрд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рддрд░реАрдХрд╛ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╡рд┐рдзрд┐ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ рдЬреЛ рдЙрджреНрдзреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рднреАрддрд░ рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реА рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
рдзрд╛рдЧрд╛ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рдЖрдЧреЗ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж рдЙрджреНрдзрд░рдг рдХреЛ рддреЛрдбрд╝рдХрд░ рдФрд░ рд╕рдорд╡рд╢рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд▓рдВрдмрд╛ рдмрдирд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

  when: '"username " ~ localauth.emergency.name ~ " privilege 0 secret" not in item'

рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдЙрдкрдпреЛрдЧреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ рдЬреИрд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд┐рдП рд╣реБрдП рд╕реАрдорд╛рдВрдХрдХ рдХреЗ рдмрд┐рдирд╛ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  when: |-
      {%- set certs = {'sync': False} -%}
      {% if gen_node_certs[inventory_hostname] or
        (not etcdcert_node.results[0].stat.exists|default(False)) or
          (not etcdcert_node.results[1].stat.exists|default(False)) or
            (etcdcert_node.results[1].stat.checksum|default('') != etcdcert_master.files|selectattr("path", "equalto", etcdcert_node.results[1].stat.path)|map(attribute="checksum")|first|default('')) -%}
              {%- set _ = certs.update({'sync': True}) -%}
      {% endif %}
      {{ certs.sync }}

рдЗрд╕рд╕реЗ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ,
рд╣рдо рдЕрд╡рд╕реНрдерд╛ рдХреЗ рдЕрдВрджрд░ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ рдФрд░ рдиреАрдЪреЗ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреА
рдЪреЗрддрд╛рд╡рдиреА: рдЬрдм рдХрдердиреЛрдВ рдореЗрдВ jinja2 рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рд╕реАрдорд╛рдВрдХрдХ рдЬреИрд╕реЗ {{}} рдпрд╛ {%%} рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ

рдЗрд╕рд▓рд┐рдП рдЪрд░ рдХреЛ рдкрд╛рд░ рдХрд░рдХреЗ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╕рдордп рдРрд╕реА рдЪреАрдЬреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдЪрд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЫреЛрдЯрд╛ рдЙрджрд╛рд╣рд░рдг

рдПрдХ рдирд╛рдЯрдХ рдкреБрд╕реНрддрдХ рдХреЛ рдЪрд▓рд╛рддреЗ рд╕рдордп рд╕рдВрд╕реНрдХрд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдпрд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ

- name: Check the java version
   shell: java -version 2>&1 | grep version | awk '{print $3}' | sed 's/"//g' | cut -d "_" -f1
   register: java_versios
 - name: testing senario
   shell: echo '{{ VERSION }}'
   register: r
- name: testing
   file:
     path: /root/Karthik/JAVATEST
     state: directory
     owner: root
     group: root
     mode: 0755
     recurse: yes
   when: java_version.stdout >= r.stdout

рдирдорд╕реНрддреЗ,

рдЬрдм рдореИрдВ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЪрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо рджреЗ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдЪрд░ "Sync_source" рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рдореИрдВ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд╕рдореВрд╣ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    - debug:
        msg:
          - "source instance: {{ inventory_hostname }}"
          - "{{ dir }} size is {{ result_dir_size }} GB"
      when: "inventory_hostname in groups.{{ sync_source }}"

@linlinas

when: "inventory_hostname in groups[sync_source]"
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

eparis picture eparis  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jiwong picture jiwong  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mverwijs picture mverwijs  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

robbwagoner picture robbwagoner  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

greggilbert picture greggilbert  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ