Ansible рдЯреЙрд╡рд░ рдореЗрдВ Ansible рд╕рд╛рдордЧреНрд░реА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдЖрдИрдЯреА рд╡рд╛рддрд╛рд╡рд░рдг рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЖрдИрдЯреА рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдореМрдЬреВрдж рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрдзреАрди рдиреЛрдбреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрджреНрдпрддрди рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред Red Hat Ansible рдСрдЯреЛрдореЗрд╢рди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рддрдерд╛рдХрдерд┐рдд рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕реВрдЪреА) - рдкреНрд░рдмрдВрдзрд┐рдд рдиреЛрдбреНрд╕ рдХреА рд╕реВрдЪреАред

Ansible рдЯреЙрд╡рд░ рдореЗрдВ Ansible рд╕рд╛рдордЧреНрд░реА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдЕрдкрдиреЗ рд╕рд░рд▓рддрдо рд░реВрдк рдореЗрдВ, рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдПрдХ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓ рд╣реИред рдЬрдм рдЖрдк Ansible рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЖрджрд░реНрд╢ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рди рдмрдврд╝рддрд╛ рд╣реИ, рдпрд╣ рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдФрд░ рдпрд╣рд╛рдВ рдХреНрдпреЛрдВ рд╣реИ:

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

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

рдЗрдиреНрд╡реЗрдВрдЯрд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕ Ansible рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓рдХреНрд╖реНрдп рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдФрд░ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдмрдирд╛рддреЗ рд╕рдордп рдЗрди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛ рд╕рддреНрдп рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред Ansible рдореЗрдВ рд╕реНрд░реЛрддреЛрдВ рдХреА рдорд╛рдирдХ рд╕реВрдЪреА рдореЗрдВ рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо AWS EC2, Google GCP рдФрд░ Microsoft Azure рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ Ansible рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреНрдп рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рднреА рд╣реИрдВред

Ansible рдЯрд╛рд╡рд░ рдХрдИ рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕, рдЬреЛ рд╕реАрдзреЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░, рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдЕрд▓рд╛рд╡рд╛, VMware vCenter, Red Hat OpenStack рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдФрд░ Red Hat рд╕реИрдЯреЗрд▓рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрди рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рдПрдиреНрд╕рд┐рдмрд▓ рдЯреЙрд╡рд░ рдореЗрдВ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдбреЗрдЯрд╛ рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╣рдо ServiceNow рдХреЗ рд▓рд┐рдП рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВрдЧреЗ, рдЬреЛ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдЖрдИрдЯреА рд╕реЗрд╡рд╛ рдкреНрд░рдмрдВрдзрди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдЕрдХреНрд╕рд░ рд╕реАрдПрдордбреАрдмреА рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реАрдПрдордбреАрдмреА рдореЗрдВ рдРрд╕реЗ рд╕рдВрджрд░реНрдн рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВ, рдЬреИрд╕реЗ рд╕рд░реНрд╡рд░ рдорд╛рд▓рд┐рдХреЛрдВ, рд╕реЗрд╡рд╛ рд╕реНрддрд░ (рдЙрддреНрдкрд╛рджрди/рдЧреИрд░-рдЙрддреНрдкрд╛рджрди), рд╕реНрдерд╛рдкрд┐рдд рдЕрдкрдбреЗрдЯ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рд╡рд┐рдВрдбреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реАред Ansible рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрди ServiceNow CMDB рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЕрднреА рдорд░рдореНрдордд рдХрд░реЗрдВ рдкреЛрд░реНрдЯрд▓ рдкрд░ Galaxy.ansible.com.

рдЧрд┐рдЯ рднрдВрдбрд╛рд░

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

рд╣рдорд╛рд░рд╛ рднрдВрдбрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:

тФЬтФАтФА collections
тФВ   тФФтФАтФА requirements.yml
тФФтФАтФА servicenow.yml

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

$ cat servicenow.yml
plugin: servicenow.servicenow.now
table: cmdb_ci_linux_server
fields: [ip_address,fqdn,host_name,sys_class_name,name,os]
keyed_groups:
  - key: sn_sys_class_name | lower
	prefix: ''
	separator: ''
  - key: sn_os | lower
	prefix: ''
	separator: ''

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

рдлрд╝рд╛рдЗрд▓ рд╕рдВрдЧреНрд░рд╣/рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ.yml рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ Ansible рдЯреЙрд╡рд░ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХреЗ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗред рдЕрдиреНрдпрдерд╛, рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рдПрдВрд╕рд┐рдмрд▓ рдЯреЙрд╡рд░ рдиреЛрдбреНрд╕ рдкрд░ рдЗрд╕ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред

$ cat collections/requirements.yml
---
collections:

- name: servicenow.servicenow

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

Ansible рдЯреЙрд╡рд░ рдореЗрдВ Ansible рд╕рд╛рдордЧреНрд░реА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

ServiceNow рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдмрдирд╛рдирд╛

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

= username
    	The ServiceNow user account, it should have rights to read cmdb_ci_server (default), or table specified by SN_TABLE

    	set_via:
      	env:
      	- name: SN_USERNAME

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ SN_USERNAME рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрди рдЗрд╕реЗ ServiceNow рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

рд╣рдореЗрдВ SN_INSTANCE рдФрд░ SN_PASSWORD рд╡реЗрд░рд┐рдПрдмрд▓ рднреА рд╕реЗрдЯ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред

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

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, ServiceNow рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

fields:
  - id: SN_USERNAME
	type: string
	label: Username
  - id: SN_PASSWORD
	type: string
	label: Password
	secret: true
  - id: SN_INSTANCE
	type: string
	label: Snow Instance
required:
  - SN_USERNAME
  - SN_PASSWORD
  - SN_INSTANCE

рдЗрди рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЛ рд╕рдорд╛рди рдирд╛рдо рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:

env:
  SN_INSTANCE: '{{ SN_INSTANCE }}'
  SN_PASSWORD: '{{ SN_PASSWORD }}'
  SN_USERNAME: '{{ SN_USERNAME }}'

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

Ansible рдЯреЙрд╡рд░ рдореЗрдВ Ansible рд╕рд╛рдордЧреНрд░реА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╣рдо рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдмрдирд╛рддреЗ рд╣реИрдВ

рддреЛ, рдЕрдм рд╣рдо рдПрдиреНрд╕рд┐рдмрд▓ рдЯрд╛рд╡рд░ рдореЗрдВ рдПрдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдЪрд▓рд┐рдП рдЗрд╕реЗ ServiceNow рдХрд╣рддреЗ рд╣реИрдВ:

Ansible рдЯреЙрд╡рд░ рдореЗрдВ Ansible рд╕рд╛рдордЧреНрд░реА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣рдорд╛рд░реА YAML рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ servicenow.yml рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдЕрдкрдирд╛ ServiceNow рдЦрд╛рддрд╛ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

Ansible рдЯреЙрд╡рд░ рдореЗрдВ Ansible рд╕рд╛рдордЧреНрд░реА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

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

Ansible рдЯреЙрд╡рд░ рдореЗрдВ Ansible рд╕рд╛рдордЧреНрд░реА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрд┐рди рд╕рдореВрд╣реЛрдВ рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡реЗ рднреА рдмрдирд╛рдП рдЧрдП рд╣реИрдВред

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

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

рдЖрдк рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдПрдиреНрд╕рд┐рдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рдкрд╣рд▓реБрдУрдВ рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

*рд░реЗрдб рд╣реИрдЯ рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рдХрд┐ рдпрд╣рд╛рдВ рдореМрдЬреВрдж рдХреЛрдб рд╕рд╣реА рд╣реИред рд╕рднреА рд╕рд╛рдордЧреНрд░рд┐рдпрд╛рдВ рдЧреИрд░-рдЕрдиреБрдореЛрджрди рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдЕрдиреНрдпрдерд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рди рдХрд╣рд╛ рдЧрдпрд╛ рд╣реЛред

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

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