Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рдпрд╣ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╣реИ рдкреНрд░рджрд░реНрд╢рди рдкрд░ DevOps-40 2020-03-18:

рджреВрд╕рд░реА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░рдХреЗ, рдХреЛрдИ рднреА рдХреЛрдб рд╡рд┐рд░рд╛рд╕рдд рдмрди рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдЪрд╛рд░ рдХрдареЛрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВред рдпрд╣ рди рддреЛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рди рд╣реА рдмреБрд░рд╛, рдпрд╣ рдПрдХ рдРрд╕рд╛ рдкреНрд░рджрддреНрдд рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдмрд╣рд╕ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рднрд╛рдЧ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╣реИред рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рдирд╛ред рдЖрдЗрдП рдХрд╣рд╛рдиреА рд╢реБрд░реВ рдХрд░реЗрдВ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╕рд╛рд▓ рдореЗрдВ рдПрдиреНрд╕рд┐рдмрд▓ рдХреЛ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВред

рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдЬрдиреНрдо

рджрд┐рди #1: рд░реЛрдЧреА рд╢реВрдиреНрдп

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рдПрдХ рдмрд╛рд░ рдХреА рдмрд╛рдд рд╣реИ рдПрдХ рд╕рд╢рд░реНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдереАред рдЗрд╕рдореЗрдВ рдПрдХ рджреЗрд╡ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдФрд░ рдСрдкреНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░ рдереЗред рд╡реЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд░рд╣реЗ рдереЗ: рд╕рд░реНрд╡рд░ рдХреИрд╕реЗ рддреИрдирд╛рдд рдХрд░реЗрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЯреАрдо рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рджреЗрд╡ рдФрд░ рдСрдкреНрд╕ рдЯреАрдореЛрдВ рдХреЗ рдмреАрдЪ рдЬреНрдЮрд╛рди рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдиреНрд╕рд┐рдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред

рджрд┐рди #89: рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдЬрдиреНрдо

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рд╕реНрд╡рдпрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдП рдмрд┐рдирд╛, рд╡реЗ рдЗрд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░реНрд╡реЛрддреНрддрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рд░рд╛рд╕рдд рдмрди рдЧрдпрд╛ред рдпреЗ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ?

  • рд╣рдореЗрдВ рдпрд╣рд╛рдВ рдПрдХ рдЬрд░реВрд░реА рдХрд╛рдо рд╣реИ, рдЖрдЗрдП рдПрдХ рдЧрдВрджрд╛ рд╣реИрдХ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВред
  • рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
  • рдореИрдВ рдЕрдиреНрд╕рд┐рдмрд▓/рдкрд╛рдпрдерди/рдмреИрд╢/рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдЬрд╛рдирддрд╛ рд╣реВрдБ! рджреЗрдЦреЛ рдореИрдВ рдХреИрд╕реЗ рдмрдЪ рд╕рдХрддрд╛ рд╣реВрдБ!
  • рдореИрдВ рдПрдХ рдкреВрд░реНрдг рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреИрдХрдУрд╡рд░рдлрд╝реНрд▓реЛ рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИред

рдирддреАрдЬрддрди, рдЖрдк рдПрдХ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ, рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ, рдмреИрд╕рд╛рдЦреА рдФрд░ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ , рдЬрд┐рд╕рд╕реЗ рд╕реНрдерд┐рддрд┐ рдФрд░ рднреА рдмрджрддрд░ рд╣реЛ рдЧрдИ рд╣реИред

- hosts: localhost
  tasks:
    - shell: echo -n Z >> a.txt && cat a.txt
      register: output
      delay: 1
      retries: 5
      until: not output.stdout.find("ZZZ")

рджрд┐рди #109: рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкреНрд░рддрд┐ рдЬрд╛рдЧрд░реВрдХрддрд╛

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд IaC рдореЙрдбрд▓ рдЕрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ/рд╡реНрдпрд╡рд╕рд╛рдп/рдЕрдиреНрдп рдЯреАрдореЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд░рд╣ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рдордп, рд╕рдордЭ рдЖрддреА рд╣реИ рдХрд┐ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред

IaC рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ

рджрд┐рди #139: рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рд░рд┐рдлреИрдХреНрдЯрд░ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВ, рдЖрдкрдХреЛ рдХрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреЗрдирд╛ рд╣реЛрдЧрд╛:

  1. рдЖрдкрдХреЛ рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдЪрд╛рд╣рд┐рдП?
  2. рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдордп рд╣реИ?
  3. рдХреНрдпрд╛ рдЬреНрдЮрд╛рди рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ?

рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рдХреИрд╕реЗ рджрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧреА, рдпрд╛ рдпрд╣ рдФрд░ рднреА рдЦрд░рд╛рдм рд╣реЛ рд╕рдХрддреА рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрднрд╡ рдерд╛( рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛрдб рдХреА 200 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛), рдлрд┐рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдХрд╡рд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред

рджрд┐рди #149: рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреА рддреИрдпрд╛рд░реА

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рд╕рдмрд╕реЗ рдкрд╣рд▓реА рдмрд╛рдд рд╣реИ рддреИрдпрд╛рд░реА рдХрд░рдирд╛. рддрдп рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ. рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдвреВрдВрдврддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдвреВрдВрдврддреЗ рд╣реИрдВред рд╣рдо рдкрд░рд┐рдгрд╛рдореА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдЧрдо рдореЗрдВ рдПрдХ рд▓реЗрдЦ, рддрд╛рдХрд┐ рдЬрдм рд╕рд╡рд╛рд▓ рдЙрдареЗ рдХрд┐ "рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХреНрдпрд╛ рд╣реИ?" рдпрд╛ "рдХреМрди рд╕рд╛ рд╕рд╣реА рд╣реИ?" рд╣рдордиреЗ рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рдЦреЛрдпрд╛ рд╣реИ. рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЕрдбрд╝реЗ рд░рд╣реЗ рдлреВрдЯ рдбрд╛рд▓реЛ рдФрд░ рд╢рд╛рд╕рди рдХрд░реЛ: рд╣рдо рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдЫреЛрдЯреЗ-рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЛрдВ/рдИрдВрдЯреЛрдВ рдореЗрдВ рддреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдЯреБрдХрдбрд╝рд╛ рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд░реЗрдВ рдФрд░ рдХреБрдЫ рднреА рдЯреВрдЯрдиреЗ рдХреЗ рдбрд░ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рдмрджрд▓ рджреЗрдВред

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

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

рдЙрддреНрддрд░рдпреЛрдЧреНрдп рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдпрд╛рд╕

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

рджрд┐рди рд╕рдВрдЦреНрдпрд╛ -997: рдПрд╕рдбреАрдПрд╕ рдкреНрд░рд╛рд╡рдзрд╛рди

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдПрд╕рдбреАрдПрд╕ (рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбрд┐рдлрд╛рдЗрдВрдб рд╕реНрдЯреЛрд░реЗрдЬ) рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдПрдиреНрд╕рд┐рдмрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдерд╛ред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рд╣реИ
рдЕрдкрдиреЗ рд╡рд┐рддрд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдмреИрд╕рд╛рдЦреА рдкрд░ рд╕рд╛рдЗрдХрд┐рд▓ рдХреИрд╕реЗ рддреЛрдбрд╝реЗрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдо рдПрдХ рдЙрд▓реНрдЯреЗ рдкрд░реАрдХреНрд╖рдг рдкрд┐рд░рд╛рдорд┐рдб рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдП рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╣рдордиреЗ рдПрдХ рднреВрдорд┐рдХрд╛ рдкрд░ 60-90 рдорд┐рдирдЯ рдмрд┐рддрд╛рдП, рдЬреЛ рдПрдХ рд▓рдВрдмрд╛ рд╕рдордп рд╣реИред рдЖрдзрд╛рд░ e2e рдкрд░реАрдХреНрд╖рдг рдерд╛, рдЕрд░реНрдерд╛рддреНред рд╣рдордиреЗ рдПрдХ рдкреВрд░реНрдг рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рдЙрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рдЬреЛ рдмрд╛рдд рдФрд░ рднреА рдХрд╖реНрдЯрджрд╛рдпрдХ рдереА рд╡рд╣ рдереА рдЙрдирдХреА рдЕрдкрдиреА рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░ рдЧрдпрд╛ рдФрд░ рд╕реНрдерд┐рд░ рд░рд┐рд▓реАрдЬрд╝ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рдЧрдИред

рджрд┐рди # -701: рдПрдиреНрд╕рд┐рдмрд▓ рдФрд░ рдЯреЗрд╕реНрдЯ рдХрд┐рдЪрди

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рдПрдиреНрд╕рд┐рдмрд▓ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдерд╛, рдЕрд░реНрдерд╛рддреН рдЯреЗрд╕реНрдЯ рдХрд┐рдЪрди / рдХрд┐рдЪрди-рд╕реАрдЖрдИ рдФрд░ рдЗрдВрд╕реНрдкреЗрдХред рд╡рд┐рдХрд▓реНрдк рд░реВрдмреА рдХреЗ рдЬреНрдЮрд╛рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рд╣реИрдмреНрд░реЗ рдкрд░ рд▓реЗрдЦ рджреЗрдЦреЗрдВ: рдХреНрдпрд╛ YML рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рд╕рдкрдирд╛ рджреЗрдЦрддреЗ рд╣реИрдВ?) рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, 40 рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 10 рдорд┐рдирдЯред рд╣рдордиреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХрд╛ рдПрдХ рдкреИрдХ рдмрдирд╛рдпрд╛ рдФрд░ рдЙрд╕рдХреЗ рдЕрдВрджрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдпрд╛ред

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡рд┐рд╡рд┐рдзрддрд╛ рдХреЗ рдХрд╛рд░рдг рдХреБрдЫ рддрд▓рдЫрдЯ рдереАред рдЬрдм рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 13 рдореВрд▓ рднреВрдорд┐рдХрд╛рдУрдВ рдФрд░ рдЫреЛрдЯреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░ 2 рдореЗрдЯрд╛ рднреВрдорд┐рдХрд╛рдУрдВ рддрдХ рдмрдврд╝рд╛ рджреА рдЧрдИ, рддреЛ рдЕрдЪрд╛рдирдХ рдкрд░реАрдХреНрд╖рдг 70 рдорд┐рдирдЯ рддрдХ рдЪрд▓рдиреЗ рд▓рдЧреЗ, рдЬреЛ рд▓рдЧрднрдЧ 2 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реИред рдПрдХреНрд╕рдкреА (рдПрдХреНрд╕рдЯреНрд░реАрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ) рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдерд╛ рдХреНрдпреЛрдВрдХрд┐... рдХреЛрдИ рднреА 70 рдорд┐рдирдЯ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛. рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрджрд▓рдиреЗ рдХрд╛ рдпрд╣реА рдХрд╛рд░рдг рдерд╛

рджрд┐рди # -601: рдЕрдиреНрд╕рд┐рдмрд▓ рдФрд░ рдЕрдгреБ

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдЯреЗрд╕реНрдЯрдХрд┐рдЪрди рдХреЗ рд╕рдорд╛рди рд╣реИ, рдХреЗрд╡рд▓ рд╣рдордиреЗ рднреВрдорд┐рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдбреЙрдХрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рд╕реНрдЯреИрдХ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, 20 рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдордп рдШрдЯрдХрд░ рд╕реНрдерд┐рд░ 25-7 рдорд┐рдирдЯ рд░рд╣ рдЧрдпрд╛ред

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рдкрд░реАрдХреНрд╖рдг рдХреА рдЧрдИ рднреВрдорд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдХрд░ 17 рдФрд░ 45 рднреВрдорд┐рдХрд╛рдПрдБ рдЬреЛрдбрд╝рдХрд░, рд╣рдордиреЗ рдЗрд╕реЗ 28 рдЬреЗрдирдХреАрдВрд╕ рд╕реНрд▓реЗрд╡ рдкрд░ 2 рдорд┐рдирдЯ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ред

рджрд┐рди #167: рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдиреНрд╕рд┐рдмрд▓ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝рдирд╛

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

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

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЖрдк рдХрд╛рдЧрдЬ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдкрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдХреЛрдард░реА рдкрд░ рд╕реНрдЯрд┐рдХрд░ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЬрд┐рд░рд╛ рдореЗрдВ рдХрд╛рд░реНрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк Google рдбреЙрдХреНрд╕ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣рд╛рдБред рдкреИрд░ рдЗрд╕ рддрдереНрдп рд╕реЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрддреНрдХрд╛рд▓ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд▓рдВрдмреА рдФрд░ рдердХрд╛рдК рд╣реЛрдЧреАред рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рдЪрд╛рд╣рддрд╛ рд╣реЛ рдХрд┐ рдЖрдк рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдердХ рдЬрд╛рдПрдВ, рдердХ рдЬрд╛рдПрдВ рдФрд░ рдЕрднрд┐рднреВрдд рд╣реЛ рдЬрд╛рдПрдВред

рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╕рд░рд▓ рд╣реИ:

  • рдЦрд╛рдирд╛ рдЦрд╛ рд▓реЛред
  • рд╕реЛ рдЬрд╛рдУ.
  • рдХреЛрдбред
  • рдЖрдИрдПрд╕реА рдкрд░реАрдХреНрд╖рдг.
  • рджреЛрд╣рд░рд╛рдирд╛

рдФрд░ рд╣рдо рдЗрд╕реЗ рддрдм рддрдХ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рд╣рдо рдЗрдЪреНрдЫрд┐рдд рд▓рдХреНрд╖реНрдп рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗред

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рд╣рд░ рдЪреАрдЬрд╝ рдХрд╛ рддреБрд░рдВрдд рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рдХрд╛рдо рд▓рд╛рдЗрдирд┐рдВрдЧ рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЬрд╛рдБрдЪ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛ рдерд╛ред

рджрд┐рди #181: рдЧреНрд░реАрди рдмрд┐рд▓реНрдб рдорд╛рд╕реНрдЯрд░

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

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

  • рд▓рд╛рд▓ рдкрд░реАрдХреНрд╖рдг рдЦрд╝рд░рд╛рдм рд╣реИрдВ.
  • рдореИрдВ рдХреБрдЫ рдареАрдХ рдХрд░рдиреЗ рдЖрдпрд╛ рд╣реВрдВ рдФрд░ рд╕рд╛рде рд╣реА рдХреЛрдб рдХреЛ рдЖрдкрдХреЗ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рдмрдирд╛рдКрдВрдЧрд╛ред

рджрд┐рди #193: рд▓рд╛рдЗрдирд┐рдВрдЧ рд╕реЗ рд▓реЗрдХрд░ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рддрдХ

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЪрд░рдг-рджрд░-рдЪрд░рдг рд╕реБрдзрд╛рд░ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЛ рд▓реЙрдиреНрдЪрд┐рдВрдЧ рднреВрдорд┐рдХрд╛рдУрдВ рд╕реЗ рдмрджрд▓рдирд╛, рдЖрдк рдЗрд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рднреВрдорд┐рдХрд╛рдПрдБ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдФрд░ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

рджрд┐рди #211: рдЗрдХрд╛рдИ рд╕реЗ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рддрдХ

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

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

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

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

рдЬреЗрдирдХреАрдВрд╕ + рдбреЙрдХрд░ + рдПрдиреНрд╕рд┐рдмрд▓ = рдкрд░реАрдХреНрд╖рдг

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

  1. рд░реЗрдкреЛ рдЪреЗрдХрдЖрдЙрдЯ рдХрд░реЗрдВ рдФрд░ рдмрд┐рд▓реНрдб рдЪрд░рдг рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред
  2. рд▓рд┐рдВрдЯ рдкреНрд▓реЗрдмреБрдХ рдЪрд░рдгреЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рд╛рдПрдБред
  3. рд▓рд┐рдВрдЯ рд░реЛрд▓ рдЪрд░рдгреЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рд╛рдПрдБред
  4. рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬрд╛рдБрдЪ рднреВрдорд┐рдХрд╛ рдЪрд░рдгреЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рд╛рдПрдБред
  5. рдкрд░реАрдХреНрд╖рдг рднреВрдорд┐рдХрд╛ рдЪрд░рдгреЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рд╛рдПрдБ.
    1. рд▓рд┐рдВрдЯ рднреВрдорд┐рдХрд╛.
    2. рдЕрдиреНрдп рднреВрдорд┐рдХрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
    3. рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ.
    4. рдбреЙрдХрд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ
    5. рдЕрдгреБ/рдбрд┐рдлрд╝реЙрд▓реНрдЯ/рдкреНрд▓реЗрдмреБрдХ.yml рдЪрд▓рд╛рдПрдБред
    6. рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ.
  6. рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдБ
  7. рдЕрдВрдд

рджрд┐рди #271: рдмрд╕ рдлреИрдХреНрдЯрд░

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рджреЛ рдпрд╛ рддреАрди рд▓реЛрдЧреЛрдВ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рдереАред рдЙрдиреНрд╣реЛрдВрдиреЗ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреАред рд╕рдордп рдХреЗ рд╕рд╛рде, рдЯреАрдо рдиреЗ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЬреНрдЮрд╛рди рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдиреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдЮрд╛рди рдХреЗ рдкреНрд░рд╕рд╛рд░ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ред рдпрд╣рд╛рдВ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдереА рдХрд┐ рд╕рдореАрдХреНрд╖рдХреЛрдВ рдХреЛ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рдХреБрдЫ рд╣рдж рддрдХ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдЖрдк рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдПрдХ рдирдП рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдВрдЧреЗред

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рдФрд░ рдпрд╣ рдпрд╣рд╛рдБ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП. рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдпрд╣ рджреЗрдЦрдирд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдХрд╛рд░реНрдп рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЪрд░реНрдЪрд╛рдУрдВ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдХреНрдпрд╛ рд╣реИред рд╣рдордиреЗ рдЬреЗрдирдХреАрдВрд╕ + рдмрд┐рдЯрдмрдХреЗрдЯ + рдЬрд┐рд░рд╛ рдХреЛ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рд╣реИред

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

- get_url:
    url: "{{ actk_certs }}/{{ item.1 }}"
    dest: "{{ actk_src_tmp }}/"
    username: "{{ actk_mvn_user }}"
    password: "{{ actk_mvn_pass }}"
  with_subelements:
    - "{{ actk_cert_list }}"
    - "{{ actk_certs }}"
  delegate_to: localhost

- copy:
    src: "{{ actk_src_tmp }}/{{ item.1 }}"
    dest: "{{ actk_dst_tmp }}"
  with_subelements:
    - "{{ actk_cert_list }}"
    - "{{ actk_certs }}"

рдлрд┐рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрд╡рд╢реЗрд╖ рд░рд╣ рдЧрдпрд╛ред

get_url:
    url: "{{ actk_certs }}/{{ actk_item }}"
    dest: "{{ actk_src_tmp }}/{{ actk_item }}"
    username: "{{ actk_mvn_user }}"
    password: "{{ actk_mvn_pass }}"
  loop_control:
    loop_var: actk_item
  with_items: "{{ actk_cert_list }}"
  delegate_to: localhost

- copy:
    src: "{{ actk_src_tmp }}/{{ actk_item }}"
    dest: "{{ actk_dst_tmp }}"
  loop_control:
    loop_var: actk_item
  with_items: "{{ actk_cert_list }}"

рджрд┐рди #311: рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдирд╛

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рд╕рдордп рдХреЗ рд╕рд╛рде, рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рд╣реБрдП, рдирд┐рд░реНрдорд╛рдг рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЪрд▓рд╛, рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХ рдШрдВрдЯреЗ рддрдХред рд░реЗрдЯреНрд░реЛ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдПрдХ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдерд╛ рдЬреИрд╕реЗ "рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдзреАрдореЗ рд╣реЛрддреЗ рд╣реИрдВред" рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдордиреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдкрд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рддреЗрдЬрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдбреЙрдХрд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ред рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЯреВрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдЯреЗрд╕реНрдЯрд┐рдирдлреНрд░рд╛ рдХреЛ рдПрдиреНрд╕рд┐рдмрд▓ рд╡реЗрд░рд┐рдлрд╛рдпрд░ рд╕реЗ рднреА рдмрджрд▓ рджрд┐рдпрд╛ред

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рдЙрдкрд╛рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдерд╛:

  1. рдбреЙрдХрд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ.
  2. рднреВрдорд┐рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╣рдЯрд╛рдПрдВ, рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
  3. рджрд╛рд╕реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдУ.
  4. рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХрд╛ рдХреНрд░рдо.
  5. рд▓рд┐рдВрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕рднреА рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдПрдХ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рдеред

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЬреЗрдирдХреАрдВрд╕ рдкрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рднреА рдПрдХреАрдХреГрдд рд╣реЛ рдЧрдИ

  1. рдирд┐рд░реНрдорд╛рдг рдЪрд░рдг рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ.
  2. рд╕рднреА рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд▓рд┐рдВрдЯ рдХрд░реЗрдВред
  3. рдкрд░реАрдХреНрд╖рдг рднреВрдорд┐рдХрд╛ рдЪрд░рдгреЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рд╛рдПрдБ.
  4. рдЦрддреНрдо рдХрд░реЛ.

рд╕рдмрдХ рд╕реАрдЦрд╛

рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╕реЗ рдмрдЪреЗрдВ

Ansible рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рдкрддреНрд░ рдореЗрдВ рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдирд┐рдЬреА_рднреВрдорд┐рдХрд╛_рд╕рдВрд╕реНрдХрд░рдг, рд▓реЗрдХрд┐рди рдпрд╣ рд░рд╛рдордмрд╛рдг рдирд╣реАрдВ рд╣реИ.

рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВред рдЪрд▓реЛ рд╣рдо рд╣рд╛рд╕рд┐рд▓ рдХрд░реЗрдВ role_a ╨╕ role_b

# cat role_a/defaults/main.yml
---
msg: a

# cat role_a/tasks/main.yml
---
- debug:
    msg: role_a={{ msg }}

# cat role_b/defaults/main.yml
---
msg: b

# cat role_b/tasks/main.yml
---
- set_fact:
    msg: b
- debug:
    msg: role_b={{ msg }}

- hosts: localhost
  vars:
    msg: hello
  roles:
    - role: role_a
    - role: role_b
  tasks:
    - debug:
        msg: play={{msg}}

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рдордЬрд╝реЗрджрд╛рд░ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд▓реЗрдмреБрдХ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЙрди рдЪреАрдЬрд╝реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рдЬреИрд╕реЗ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдХреНрд░рдоред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ Ansible рдХреА рдкреНрд░рдХреГрддрд┐ рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдЬреЛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рд╡рд╣ рд╣реИ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдордЭреМрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреВрдорд┐рдХрд╛ рдХреЗ рднреАрддрд░, рдХреЗрд╡рд▓ рдЗрд╕ рднреВрдорд┐рдХрд╛ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

рдЦрд░рд╛рдм: рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

# cat roles/some_role/tasks/main.yml
---
debug:
  var: java_home

GOOD: рд╡реА defaults рдЖрд╡рд╢реНрдпрдХ рдЪрд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдХреЗрд╡рд▓ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

# cat roles/some_role/defaults/main.yml
---
r__java_home:
 "{{ java_home | default('/path') }}"

# cat roles/some_role/tasks/main.yml
---
debug:
  var: r__java_home

рдЙрдкрд╕рд░реНрдЧ рднреВрдорд┐рдХрд╛ рдЪрд░

рдЦрд░рд╛рдм: рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

# cat roles/some_role/defaults/main.yml
---
db_port: 5432

GOOD: рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ, рд░реЛрд▓ рдирд╛рдо рдХреЗ рдкрд╣рд▓реЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ; рдЗрд╕рд╕реЗ, рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдХреЛ рджреЗрдЦрдХрд░, рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред

# cat roles/some_role/defaults/main.yml
---
some_role__db_port: 5432

рд▓реВрдк рдирд┐рдпрдВрддреНрд░рдг рдЪрд░ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ

рдЦрд░рд╛рдм: рд▓реВрдк рдореЗрдВ рдорд╛рдирдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ item, рдпрджрд┐ рдпрд╣ рдХрд╛рд░реНрдп/рдкреНрд▓реЗрдмреБрдХ рдХрд╣реАрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

---
- hosts: localhost
  tasks:
    - debug:
        msg: "{{ item }}"
      loop:
        - item1
        - item2

GOOD: рд▓реВрдк рдореЗрдВ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ loop_var.

---
- hosts: localhost
  tasks:
    - debug:
        msg: "{{ item_name }}"
      loop:
        - item1
        - item2
      loop_control:
        loop_var: item_name

рдЗрдирдкреБрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ

рд╣рдо рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реБрдП; рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЕрддрд┐рд╢реНрдпреЛрдХреНрддрд┐рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╣рдорд╛рд░реА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдЦрд╛рд▓реА рдорд╛рди рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

GOOD: рдЪрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ.

- name: "Verify that required string variables are defined"
  assert:
    that: ahs_var is defined and ahs_var | length > 0 and ahs_var != None
    fail_msg: "{{ ahs_var }} needs to be set for the role to work "
    success_msg: "Required variables {{ ahs_var }} is defined"
  loop_control:
    loop_var: ahs_var
  with_items:
    - ahs_item1
    - ahs_item2
    - ahs_item3

рд╣реИрд╢ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рд╕реЗ рдмрдЪреЗрдВ, рд╕рдкрд╛рдЯ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдпрджрд┐ рдХреЛрдИ рднреВрдорд┐рдХрд╛ рдЕрдкрдиреЗ рдХрд┐рд╕реА рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╣реИрд╢/рдбрд┐рдХреНрд╢рдирд░реА рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреА рд╣реИ, рддреЛ рдпрджрд┐ рд╣рдо рдЪрд╛рдЗрд▓реНрдб рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рд╣реИрд╢/рдбрд┐рдХреНрд╢рдирд░реА рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬрдЯрд┐рд▓рддрд╛ рдмрдврд╝ рдЬрд╛рдПрдЧреАред

рдЦрд░рд╛рдм: рд╣реИрд╢/рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ.

---
user:
  name: admin
  group: admin

GOOD: рдПрдХ рд╕рдорддрд▓ рдЪрд░ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ.

---
user_name: admin
user_group: "{{ user_name }}"

рдЖрджрд░реНрд╢ рдкреНрд▓реЗрдмреБрдХ рдФрд░ рднреВрдорд┐рдХрд╛рдПрдБ рдмрдирд╛рдПрдБ

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

рдХрдорд╛рдВрдб рд╢реЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ

рд╢реЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдШреЛрд╖рдгрд╛рддреНрдордХ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╡рд┐рд╡рд░рдг рдкреНрд░рддрд┐рдорд╛рди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдПрдиреНрд╕рд┐рдмрд▓ рдХрд╛ рдореВрд▓ рд╣реИред

рдЕрдгреБ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреА рднреВрдорд┐рдХрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ

рдЕрдгреБ рдПрдХ рдмрд╣реБрдд рд╣реА рд▓рдЪреАрд▓реА рдЪреАрдЬрд╝ рд╣реИ, рдЖрдЗрдП рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рдЕрдгреБ рдПрдХрд╛рдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг

╨Т molecule.yml рдЕрдиреБрднрд╛рдЧ рдореЗрдВ platforms рдЖрдк рдХрдИ рд╣реЛрд╕реНрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рддреИрдирд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

---
    driver:
      name: docker
    platforms:
      - name: postgresql-instance
        hostname: postgresql-instance
        image: registry.example.com/postgres10:latest
        pre_build_image: true
        override_command: false
        network_mode: host
      - name: app-instance
        hostname: app-instance
        pre_build_image: true
        image: registry.example.com/docker_centos_ansible_tests
        network_mode: host

рддрджрдиреБрд╕рд╛рд░, рдпреЗ рдореЗрдЬрдмрд╛рди рддрдм рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ converge.yml рдЙрдкрдпреЛрдЧ:

---
- name: Converge all
  hosts: all
  vars:
    ansible_user: root
  roles:
    - role: some_role

- name: Converge db
  hosts: db-instance
  roles:
    - role: some_db_role

- name: Converge app
  hosts: app-instance
  roles:
    - role: some_app_role

рдЙрддреНрддрд░рдпреЛрдЧреНрдп рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛

рдЕрдгреБ рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд┐рд▓реАрдЬрд╝ 3 рдХреЗ рдмрд╛рдж рд╕реЗ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░рд╣рд╛ рд╣реИред рдпрд╣ testinfra/inspec рдЬрд┐рддрдирд╛ рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рд╣рдорд╛рд░реА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ:

---
- name: Verify
  hosts: all
  tasks:
    - name: copy config
      copy:
        src: expected_standalone.conf
        dest: /root/wildfly/bin/standalone.conf
        mode: "0644"
        owner: root
        group: root
      register: config_copy_result

    - name: Certify that standalone.conf changed
      assert:
        that: not config_copy_result.changed

рдпрд╛ рд╕реЗрд╡рд╛ рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдзреВрдореНрд░рдкрд╛рди рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ:

---
  - name: Verify
    hosts: solr
    tasks:
      - command: /blah/solr/bin/solr start -s /solr_home -p 8983 -force
      - uri:
          url: http://127.0.0.1:8983/solr
          method: GET
          status_code: 200
        register: uri_result
        until: uri_result is not failed
        retries: 12
        delay: 10
      - name: Post documents to solr
        command: /blah/solr/bin/post -c master /exampledocs/books.csv

рдореЙрдбреНрдпреВрд▓ рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдбрд╛рд▓реЗрдВ

Ansible рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╡рдХрд╛рд▓рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдЖрдк рдХреЛрдб рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ, рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдореЗрд╢рди, рд╢реЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рд╕рд░рд▓ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдХрд░ рдЗрд╕ рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдирд╛ рдЕрддрд┐рд╢реНрдпреЛрдХреНрддрд┐рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЯрд┐рдкреНрд╕ рдФрд░ рдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ

  1. рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╕реЗ рдмрдЪреЗрдВ.
  2. рдЙрдкрд╕рд░реНрдЧ рднреВрдорд┐рдХрд╛ рдЪрд░.
  3. рд▓реВрдк рдХрдВрдЯреНрд░реЛрд▓ рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ.
  4. рдЗрдирдкреБрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ.
  5. рд╣реИрд╢ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рд╕реЗ рдмрдЪреЗрдВ, рд╕рдкрд╛рдЯ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  6. рдЖрджрд░реНрд╢ рдкреНрд▓реЗрдмреБрдХ рдФрд░ рднреВрдорд┐рдХрд╛рдПрдБ рдмрдирд╛рдПрдБред
  7. рдХрдорд╛рдВрдб рд╢реЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВред
  8. рдЕрдгреБ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреА рднреВрдорд┐рдХрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред
  9. рдореЙрдбреНрдпреВрд▓ рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдбрд╛рд▓реЗрдВред

рдирд┐рд╖реНрдХрд░реНрд╖

Ansible рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдкрд╛рдЧрд▓ рди рд╣реЛ рдЬрд╛рдПрдВ

рдЖрдк рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЬрд╛рдХрд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рджреЛрдмрд╛рд░рд╛ рддреИрдпрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рднрд▓реЗ рд╣реА рдЖрдкрдХреЗ рдкрд╛рд╕ IaC рд╣реЛред рдпрд╣ рдПрдХ рд▓рдВрдмреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдзреИрд░реНрдп, рд╕рдордп рдФрд░ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

UPD1 2020.05.01 20:30 тАФ рдкреНрд▓реЗрдмреБрдХ рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ callback_whitelist = profile_tasks рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рд╣рдо рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдЙрддреНрддрд░рджрд╛рдпреА рддреНрд╡рд░рдг рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕. рдЖрдк рднреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдорд╛рдЗрдЯреЛрдЬрди
UPD2 2020.05.03 16:34 - рдЕрдВрдЧреНрд░реЗрдЬрд╝реА рдЕрдиреБрд╡рд╛рдж

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ