ื’ื™ืฉืช ืžืขืจื›ืช ืœืžืฉืชื ื™ื ื‘-Ansible

ansible devops codestyle

ื”ื™ื™! ืฉืžื™ ื“ื ื™ืก ืงืœื•ื–'ื ื™ ืื ื™ ืขื•ื‘ื“ ื›ืžื”ื ื“ืก ื‘ืžื—ืœืงืช ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืชื”ืœื™ื›ื™ ืคื™ืชื•ื—. ืžื“ื™ ื™ื•ื, ื‘ื ื™ื™ืช ื™ื™ืฉื•ืžื™ื ื—ื“ืฉื™ื ืžืชื’ืœื’ืœื™ื ืœืžืื•ืช ืฉืจืชื™ ืงืžืคื™ื™ื ื™ื. ื•ื‘ืžืืžืจ ื–ื”, ืื ื™ ื—ื•ืœืง ืืช ื”ื—ื•ื•ื™ื” ืฉืœื™ ื‘ืฉื™ืžื•ืฉ ื‘-Ansible ืœืžื˜ืจื•ืช ืืœื•.

ืžื“ืจื™ืš ื–ื” ืžืฆื™ืข ื“ืจืš ืœืืจื’ืŸ ืžืฉืชื ื™ื ื‘ืคืจื™ืกื”. ืžื“ืจื™ืš ื–ื” ืžื™ื•ืขื“ ืœืžื™ ืฉื›ื‘ืจ ืžืฉืชืžืฉ ื‘ืชืคืงื™ื“ื™ื ื‘ืกืคืจื™ ื”ืžืฉื—ืงื™ื ืฉืœื”ื ื•ืงื•ืจื ืฉื™ื˜ื•ืช ืขื‘ื•ื“ื” ืžื•ืžืœืฆื•ืชืื‘ืœ ื ืชืงืœ ื‘ื‘ืขื™ื•ืช ื“ื•ืžื•ืช:

  • ืœืื—ืจ ืฉืžืฆืืชื™ ืžืฉืชื ื” ื‘ืงื•ื“, ืื™ ืืคืฉืจ ืœื”ื‘ื™ืŸ ืžื™ื“ ืขืœ ืžื” ื”ื•ื ืื—ืจืื™;
  • ื™ืฉ ื›ืžื” ืชืคืงื™ื“ื™ื, ื•ื”ืžืฉืชื ื™ื ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืงืฉื•ืจื™ื ืœืขืจืš ืื—ื“, ืื‘ืœ ื–ื” ืœื ืขื•ื‘ื“;
  • ืžืชืงืฉื™ื ืœื”ืกื‘ื™ืจ ืœืื—ืจื™ื ื›ื™ืฆื“ ืคื•ืขืœ ื”ื”ื™ื’ื™ื•ืŸ ืฉืœ ื”ืžืฉืชื ื™ื ื‘ืกืคืจื™ ื”ืžืฉื—ืงื™ื ืฉืœื›ื

ื ืชืงืœื ื• ื‘ื‘ืขื™ื•ืช ืืœื• ื‘ืคืจื•ื™ืงื˜ื™ื ื‘ื—ื‘ืจื” ืฉืœื ื•, ื•ื›ืชื•ืฆืื” ืžื›ืš ื”ื’ืขื ื• ืœื›ืœืœื™ ืขื™ืฆื•ื‘ ืžืฉืชื ื™ื ื‘ืกืคืจื™ ื”ืžืฉื—ืงื™ื ืฉืœื ื•, ืฉื‘ืžื™ื“ื” ืžืกื•ื™ืžืช ืคืชืจื• ืืช ื”ื‘ืขื™ื•ืช ื”ืœืœื•.

ื’ื™ืฉืช ืžืขืจื›ืช ืœืžืฉืชื ื™ื ื‘-Ansible

ืžืฉืชื ื™ื ื‘ืชืคืงื™ื“ื™ื

ืชืคืงื™ื“ ื”ื•ื ืื•ื‘ื™ื™ืงื˜ ื ืคืจื“ ืฉืœ ืžืขืจื›ืช ืคืจื™ืกื”. ื›ืžื• ื›ืœ ืื•ื‘ื™ื™ืงื˜ ืฉืœ ื”ืžืขืจื›ืช, ื”ื•ื ื—ื™ื™ื‘ ืœื”ื™ื•ืช ื‘ืขืœ ืžืžืฉืง ืœืื™ื ื˜ืจืืงืฆื™ื” ืขื ืฉืืจ ื”ืžืขืจื›ืช. ืžืฉืชื ื™ ืชืคืงื™ื“ื™ื ื”ื ืžืžืฉืง ื›ื–ื”.

ืงื—, ืœืžืฉืœ, ืืช ื”ืชืคืงื™ื“ api, ื”ืžืชืงื™ืŸ ืืคืœื™ืงืฆื™ื™ืช Java ื‘ืฉืจืช. ืื™ืœื• ืžืฉืชื ื™ื ื™ืฉ ืœื•?

ื’ื™ืฉืช ืžืขืจื›ืช ืœืžืฉืชื ื™ื ื‘-Ansible

ื ื™ืชืŸ ืœื—ืœืง ืžืฉืชื ื™ ืชืคืงื™ื“ื™ื ืœ-2 ืกื•ื’ื™ื ืœืคื™ ืกื•ื’:

1. ะกะฒะพะนัั‚ะฒะฐ
    a) ะฝะตะทะฐะฒะธัะธะผั‹ะต ะพั‚ ัั€ะตะดั‹
    ะฑ) ะทะฐะฒะธัะธะผั‹ะต ะพั‚ ัั€ะตะดั‹
2. ะกะฒัะทะธ
    a) ัะปัƒัˆะฐั‚ะตะปะธ 
    ะฑ) ะทะฐะฟั€ะพัั‹ ะฒะฝัƒั‚ั€ะธ ัะธัั‚ะตะผั‹
    ะฒ) ะทะฐะฟั€ะพัั‹ ะฒ ัั€ะตะดัƒ

ืžืืคื™ื™ื ื™ื ืžืฉืชื ื™ื ื”ื ืžืฉืชื ื™ื ื”ืžื’ื“ื™ืจื™ื ืืช ื”ื”ืชื ื”ื’ื•ืช ืฉืœ ืชืคืงื™ื“.

ืžืฉืชื ื™ ืฉืื™ืœืชื” ื”ื ืžืฉืชื ื™ื ืฉืขืจื›ื ืžืฉืžืฉ ืœื™ื™ืขื•ื“ ืžืฉืื‘ื™ื ื—ื™ืฆื•ื ื™ื™ื ืœืชืคืงื™ื“.

ืžืื–ื™ื ื™ื ืžืฉืชื ื™ื ื”ื ืžืฉืชื ื™ื ืฉื”ืขืจืš ืฉืœื”ื ืžืฉืžืฉ ืœื™ืฆื™ืจืช ืžืฉืชื ื™ ืฉืื™ืœืชื”.

ืžืฆื“ ืฉื ื™, 1a, 2a, 2b ื”ื ืžืฉืชื ื™ื ืฉืื™ื ื ืชืœื•ื™ื™ื ื‘ืกื‘ื™ื‘ื” (ื‘ืจื–ืœ, ืžืฉืื‘ื™ื ื—ื™ืฆื•ื ื™ื™ื ื•ื›ื•') ื•ื ื™ืชืŸ ืœืžืœื ืื•ืชื ื‘ืขืจื›ื™ ื‘ืจื™ืจืช ืžื—ื“ืœ ื‘ืชืคืงื™ื“ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ. ืขื ื–ืืช, ืœื ื ื™ืชืŸ ืœืžืœื ืžืฉืชื ื™ื ื›ืžื• 1.b ื•-2.c ื‘ืขืจื›ื™ื ืžืœื‘ื“ 'ื“ื•ื’ืžื”', ืžื›ื™ื•ื•ืŸ ืฉื”ื ื™ืฉืชื ื• ืžืžืขืžื“ ืœืขืžื•ื“ ื‘ื”ืชืื ืœืกื‘ื™ื‘ื”.

ืกื’ื ื•ืŸ ืงื•ื“

  • ืฉื ื”ืžืฉืชื ื” ื—ื™ื™ื‘ ืœื”ืชื—ื™ืœ ื‘ืฉื ื”ืชืคืงื™ื“. ื›ืš ื™ื”ื™ื” ืงืœ ืœื”ื‘ื™ืŸ ื‘ืขืชื™ื“ ืžืื™ื–ื” ืชืคืงื™ื“ ืžื’ื™ืข ื”ืžืฉืชื ื” ื•ืœืžื” ื”ื•ื ืื—ืจืื™.
  • ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืžืฉืชื ื™ื ื‘ืชืคืงื™ื“ื™ื, ืขืœื™ืš ืœื”ืงืคื™ื“ ืขืœ ืขืงืจื•ืŸ ื”ืื ืงืคืกื•ืœืฆื™ื” ื•ืœื”ืฉืชืžืฉ ื‘ืžืฉืชื ื™ื ื”ืžื•ื’ื“ืจื™ื ื‘ืชืคืงื™ื“ ืขืฆืžื• ืื• ื‘ืชืคืงื™ื“ื™ื ืฉื‘ื”ื ืชืœื•ื™ ื”ื ื•ื›ื—ื™.
  • ื”ื™ืžื ืข ืžืฉื™ืžื•ืฉ ื‘ืžื™ืœื•ื ื™ื ืœืžืฉืชื ื™ื. Ansible ืœื ืžืืคืฉืจ ืœืš ืœืขืงื•ืฃ ื‘ื ื•ื—ื•ืช ืขืจื›ื™ื ื‘ื•ื“ื“ื™ื ื‘ืžื™ืœื•ืŸ.

    ื“ื•ื’ืžื” ืœืžืฉืชื ื” ืจืข:

    myrole_user:
        login: admin
        password: admin

    ื›ืืŸ, ื”ื›ื ื™ืกื” ื”ื™ื ื”ืžืฉืชื ื” ื”ื—ืฆื™ื•ื ื™, ื•ื”ืกื™ืกืžื” ื”ื™ื ื”ืžืฉืชื ื” ื”ืชืœื•ื™. ืื‘ืœ
    ืžื›ื™ื•ื•ืŸ ืฉื”ื ืžืฉื•ืœื‘ื™ื ืœืžื™ืœื•ืŸ, ืชืฆื˜ืจืš ืœืฆื™ื™ืŸ ืื•ืชื• ื‘ืžืœื•ืื•
    ืชืžื™ื“. ื•ื–ื” ืžืื•ื“ ืœื ื ื•ื—. ืขื“ื™ืฃ ื›ื›ื”:

    myrole_user_login: admin
    myrole_user_password: admin

ืžืฉืชื ื™ื ื‘ืกืคืจื™ ื”ืคืจื™ืกื”

ื‘ืขืช ื”ื™ื“ื•ืจ ืฉืœ ืคื ืงืก ืคืจื™ืกื” (ืœื”ืœืŸ ืคื ืงืก ื”ืคืขืœื”), ืื ื• ืžืงืคื™ื“ื™ื ืขืœ ื”ื›ืœืœ ืฉื™ืฉ ืœืžืงื ืื•ืชื• ื‘ืžืื’ืจ ื ืคืจื“. ื‘ื“ื™ื•ืง ื›ืžื• ืชืคืงื™ื“ื™ื: ื›ืœ ืื—ื“ ื‘ืžืื’ืจ git ืžืฉืœื•. ื–ื” ืžืืคืฉืจ ืœืš ืœื”ื‘ื™ืŸ ืฉื”ืชืคืงื™ื“ื™ื ื•ืกืคืจ ื”ืžืฉื—ืงื™ื ื”ื ืื•ื‘ื™ื™ืงื˜ื™ื ืขืฆืžืื™ื™ื ืฉื•ื ื™ื ืฉืœ ืžืขืจื›ืช ื”ืคืจื™ืกื”, ื•ืฉื™ื ื•ื™ื™ื ื‘ืื•ื‘ื™ื™ืงื˜ ืื—ื“ ืœื ืืžื•ืจื™ื ืœื”ืฉืคื™ืข ืขืœ ืคืขื•ืœืชื• ืฉืœ ื”ืฉื ื™. ื–ื” ืžื•ืฉื’ ืขืœ ื™ื“ื™ ืฉื™ื ื•ื™ ืขืจื›ื™ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ื”ืžืฉืชื ื™ื.

ื‘ืขืช ื”ื™ื“ื•ืจ ืฉืœ ืกืคืจ ื”ืคืขืœื”, ืœืกื™ื›ื•ื, ื ื™ืชืŸ ืœืขืงื•ืฃ ืืช ืขืจื›ื™ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ืžืฉืชื ื™ ืชืคืงื™ื“ื™ื ื‘ืฉื ื™ ืžืงื•ืžื•ืช: ื‘ืžืฉืชื ื™ ืคืœื™ื™ื‘ื•ืง ื•ื‘ืžืฉืชื ื™ ืžืœืื™.

mydeploy                        # ะšะฐั‚ะฐะปะพะณ ะดะตะฟะปะพั
โ”œโ”€โ”€ deploy.yml                  # ะŸะปะตะนะฑัƒะบ ะดะตะฟะปะพั
โ”œโ”€โ”€ group_vars                  # ะšะฐั‚ะฐะปะพะณ ะฟะตั€ะตะผะตะฝะฝั‹ั… ะฟะปะตะนะฑัƒะบะฐ
โ”‚   โ”œโ”€โ”€ all.yml                 # ะคะฐะนะป ะดะปั ะฟะตั€ะตะผะตะฝะฝั‹ั… ัะฒัะทะธ ะฒัะตะน ัะธัั‚ะตะผั‹
โ”‚   โ””โ”€โ”€ myapi.yml               # ะคะฐะนะป ะฟะตั€ะตะผะตะฝะฝั‹ั… ัะฒะพะนัั‚ะฒ ะณั€ัƒะฟะฟั‹ myapi
โ””โ”€โ”€ inventories                 #
    โ””โ”€โ”€ prod                    # ะšะฐั‚ะฐะปะพะณ ะพะบั€ัƒะถะตะฝะธั prod
        โ”œโ”€โ”€ prod.ini            # ะ˜ะฝะฒะตะฝั‚ะพั€ะธ ั„ะฐะนะป
        โ””โ”€โ”€ group_vars          # ะšะฐั‚ะฐะปะพะณ ะดะปั ะฟะตั€ะตะผะตะฝะฝั‹ั… ะธะฝะฒะตะฝั‚ะพั€ะธ
            โ””โ”€โ”€ myapi           #
                โ”œโ”€โ”€ vars.yml    # ะกั€ะตะดะพะทะฐะฒะธัะธะผั‹ะต ะฟะตั€ะตะผะตะฝะฝั‹ะต ะณั€ัƒะฟะฟั‹ myapi
                โ””โ”€โ”€ vault.yml   # ะกะตะบั€ะตั‚ั‹ (ะฒัะตะณะดะฐ ัั€ะตะดะพะทะฐะฒะธัะธะผั‹) *

* - ืžืฉืชื ื™ื ื•ืงืžืจื•ื ื•ืช

ื”ื”ื‘ื“ืœ ื”ื•ื ืฉืžืฉืชื ื™ื ืฉืœ ืกืคืจื™ ืžืฉื—ืง ืžืฉืžืฉื™ื ืชืžื™ื“ ื›ืฉืงื•ืจืื™ื ืœืกืคืจื™ ืžืฉื—ืง ืฉื ืžืฆืื™ื ื‘ืื•ืชื” ืจืžื” ืื™ืชื•. ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉื”ืžืฉืชื ื™ื ื”ืœืœื• ืžืฆื•ื™ื ื™ื ืœืฉื™ื ื•ื™ ืขืจื›ื™ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ืžืฉืชื ื™ื ืฉืื™ื ื ืชืœื•ื™ื™ื ื‘ืกื‘ื™ื‘ื”. ืœืขื•ืžืช ื–ืืช, ืžืฉืชื ื™ ืžืœืื™ ื™ืฉืžืฉื• ืจืง ืขื‘ื•ืจ ืกื‘ื™ื‘ื” ืžืกื•ื™ืžืช, ืฉื”ื™ื ืื™ื“ื™ืืœื™ืช ืขื‘ื•ืจ ืžืฉืชื ื™ื ืกืคืฆื™ืคื™ื™ื ืœืกื‘ื™ื‘ื”.

ื—ืฉื•ื‘ ืœืฆื™ื™ืŸ ืฉืขื“ื™ืคื•ืช ืžืฉืชื ื™ื ืœื ืชืืคืฉืจ ืœื›ื ืœื”ื’ื“ื™ืจ ืžื—ื“ืฉ ืžืฉืชื ื™ื ืชื—ื™ืœื” ื‘ืžืฉืชื ื™ Playbook ื•ืœืื—ืจ ืžื›ืŸ ื‘ื ืคืจื“ ื‘ืื•ืชื• ืžืœืื™.

ื–ื” ืื•ืžืจ ืฉื›ื‘ืจ ื‘ืฉืœื‘ ื–ื” ืฆืจื™ืš ืœื”ื—ืœื™ื˜ ื”ืื ื”ืžืฉืชื ื” ืชืœื•ื™ ื‘ืกื‘ื™ื‘ื” ืื• ืœื ื•ืœืžืงื ืื•ืชื• ื‘ืžืงื•ื ื”ื ื›ื•ืŸ.

ืœื“ื•ื’ืžื”, ื‘ืคืจื•ื™ืงื˜ ืื—ื“, ื”ืžืฉืชื ื” ืฉืื—ืจืื™ ืœื”ืคืขืœืช SSL ื”ื™ื” ืชืœื•ื™ ื‘ืกื‘ื™ื‘ื” ื‘ืžืฉืš ื–ืžืŸ ืจื‘, ืžื›ื™ื•ื•ืŸ ืฉืœื ื™ื›ื•ืœื ื• ืœืืคืฉืจ SSL ืžืกื™ื‘ื•ืช ืฉืื™ื ืŸ ื‘ืฉืœื™ื˜ืชื ื• ื‘ืื—ื“ ื”ื“ื•ื›ื ื™ื. ืœืื—ืจ ืฉืชื™ืงื ื• ืืช ื”ื‘ืขื™ื” ื”ื–ื•, ื”ื™ื ื”ืคื›ื” ืœื‘ืœืชื™ ืชืœื•ื™ื” ื‘ื™ื ื•ื ื™ืช ื•ืขื‘ืจื” ืœืžืฉืชื ื™ Playbook.

ืžืฉืชื ื™ ื ื›ืก ืœืงื‘ื•ืฆื•ืช

ื‘ื•ืื• ื ืจื—ื™ื‘ ืืช ื”ืžื•ื“ืœ ืฉืœื ื• ื‘ืื™ื•ืจ 1 ืขืœ ื™ื“ื™ ื”ื•ืกืคืช 2 ืงื‘ื•ืฆื•ืช ืฉืœ ืฉืจืชื™ื ืขื ื™ื™ืฉื•ื Java ืฉื•ื ื”, ืืš ืขื ื”ื’ื“ืจื•ืช ืฉื•ื ื•ืช.

ื’ื™ืฉืช ืžืขืจื›ืช ืœืžืฉืชื ื™ื ื‘-Ansible

ืชืืจื• ืœืขืฆืžื›ื ืื™ืš ื™ืจืื” ืกืคืจ ื”ืžืฉื—ืงื™ื ื‘ืžืงืจื” ื–ื”:

- hosts: myapi
  roles:
    - api

- hosts: bbauth
  roles:
    - auth

- hosts: ghauth
  roles:
    - auth

ื™ืฉ ืœื ื• ืฉืœื•ืฉ ืงื‘ื•ืฆื•ืช ื‘-Playbook, ืœื›ืŸ ืžื•ืžืœืฅ ืœื™ืฆื•ืจ ื›ืžื” ืฉื™ื•ืชืจ ืงื‘ืฆื™ ืงื‘ื•ืฆื” ื‘ืžืฉืชื ื™ ืžืœืื™ group_vars ื•ืžืฉืชื ื™ Playbook ื‘ื•-ื–ืžื ื™ืช. ืงื•ื‘ืฅ ืงื‘ื•ืฆืชื™ ืื—ื“ ื‘ืžืงืจื” ื–ื” ื”ื•ื ื”ืชื™ืื•ืจ ืฉืœ ืจื›ื™ื‘ ืื—ื“ ืฉืœ ื”ื™ื™ืฉื•ื ืฉืœืš ื‘ืกืคืจ ื”ืžืฉื—ืงื™ื. ื›ืืฉืจ ืืชื” ืคื•ืชื— ืืช ืงื•ื‘ืฅ ื”ืงื‘ื•ืฆื” ื‘ืžืฉืชื ื™ ื”-Playbook, ืืชื” ืจื•ืื” ืžื™ื“ ืืช ื›ืœ ื”ื”ื‘ื“ืœื™ื ืžื”ืชื ื”ื’ื•ืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ื”ืชืคืงื™ื“ื™ื ืฉื”ื•ืงืฆื• ืœืงื‘ื•ืฆื”. ื‘ืžืฉืชื ื™ ืžืœืื™: ื”ื‘ื“ืœื™ื ื‘ื”ืชื ื”ื’ื•ืช ื”ืงื‘ื•ืฆื” ืžื“ื•ื›ืŸ ืœื“ื•ื›ืŸ.

ืงื•ื“ ืกื’ื ื•ืŸ

  • ื ืกื• ืœื ืœื”ืฉืชืžืฉ ื‘ืžืฉืชื ื™ host_vars ื›ืœืœ, ืžื›ื™ื•ื•ืŸ ืฉื”ื ืื™ื ื ืžืชืืจื™ื ืืช ื”ืžืขืจื›ืช, ืืœื ืจืง ืžืงืจื” ืžื™ื•ื—ื“, ืืฉืจ ื‘ื˜ื•ื•ื— ื”ืืจื•ืš ื™ื•ื‘ื™ืœ ืœืฉืืœื•ืช: "ืœืžื” ื”ืžืืจื— ื”ื–ื” ืฉื•ื ื” ืžื”ืฉืืจ?", ื”ืชืฉื•ื‘ื” ืขืœื™ื” ื”ื™ื ืœื ืชืžื™ื“ ืงืœ ืœืžืฆื•ื.

ืžืฉืชื ื™ ืงื™ืฉื•ืจ

ืขื ื–ืืช, ื–ื” ืœื’ื‘ื™ ืžืฉืชื ื™ ืžืืคื™ื™ื ื™ื, ืื‘ืœ ืžื” ืœื’ื‘ื™ ืžืฉืชื ื™ ืงื™ืฉื•ืจ?
ื”ื”ื‘ื“ืœ ื‘ื™ื ื™ื”ื ื”ื•ื ืฉื”ื ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ื‘ืขืœื™ ืขืจืš ื–ื”ื” ื‘ืงื‘ื•ืฆื•ืช ืฉื•ื ื•ืช.

ื‘ื”ืชื—ืœื” ื”ื™ื” ืจืขื™ื•ืŸ ื”ืฉืชืžืฉ ื‘ืžื‘ื ื” ืžืคืœืฆืชื™ ืฉืœ ื”ืฆื•ืจื”:
hostvars[groups['bbauth'][0]]['auth_bind_port'], ืื‘ืœ ื–ื” ื ื ื˜ืฉ ืžื™ื“
ื›ื™ ื™ืฉ ืœื• ืคื’ืžื™ื. ืจืืฉื™ืช, ื”ื ืคื—. ืฉื ื™ืช, ืชืœื•ืช ื‘ืžืืจื— ืกืคืฆื™ืคื™ ื‘ืงื‘ื•ืฆื”. ืฉืœื™ืฉื™ืช, ื™ืฉ ืฆื•ืจืš ืœืืกื•ืฃ ืขื•ื‘ื“ื•ืช ืžื›ืœ ื”ืžืืจื—ื™ื ืœืคื ื™ ืชื—ื™ืœืช ื”ืคืจื™ืกื”, ืื ืื ื—ื ื• ืœื ืจื•ืฆื™ื ืœืงื‘ืœ ืฉื’ื™ืืช ืžืฉืชื ื” ืœื ืžื•ื’ื“ืจืช.

ื›ืชื•ืฆืื” ืžื›ืš ื”ื•ื—ืœื˜ ืœื”ืฉืชืžืฉ ื‘ืžืฉืชื ื™ ืงื™ืฉื•ืจ.

ืžืฉืชื ื™ ืงื™ืฉื•ืจ ื”ื ืžืฉืชื ื™ื ื”ืฉื™ื™ื›ื™ื ืœ-Playbook ื•ื ื“ืจืฉื™ื ืœืงื™ืฉื•ืจ ืื•ื‘ื™ื™ืงื˜ื™ ืžืขืจื›ืช.

ืžืฉืชื ื™ ืงื™ืฉื•ืจ ืžืื•ื›ืœืกื™ื ื‘ืžืฉืชื ื™ ืžืขืจื›ืช ื›ืœืœื™ื™ื group_vars/all/vars ื•ื”ื ื ื•ืฆืจื™ื ืขืœ ื™ื“ื™ ื”ืกืจืช ื›ืœ ืžืฉืชื ื™ ื”ืžืื–ื™ืŸ ืžื›ืœ ืงื‘ื•ืฆื”, ื•ื”ื•ืกืคืช ืฉื ื”ืงื‘ื•ืฆื” ืžืžื ื” ื”ื•ืกืจ ื”ืžืื–ื™ืŸ ืœืชื—ื™ืœืช ื”ืžืฉืชื ื”.

ื›ืš ืžื•ื‘ื˜ื—ืช ื”ืื—ื™ื“ื•ืช ื•ืื™ ื”ืฆื˜ืœื‘ื•ืช ื”ืฉืžื•ืช.

ื‘ื•ืื• ื ื ืกื” ืœืื’ื“ ืžืฉืชื ื™ื ืžื”ื“ื•ื’ืžื” ืœืžืขืœื”:

ื’ื™ืฉืช ืžืขืจื›ืช ืœืžืฉืชื ื™ื ื‘-Ansible

ืชืืจื• ืœืขืฆืžื›ื ืฉื™ืฉ ืœื ื• ืžืฉืชื ื™ื ื”ืชืœื•ื™ื™ื ื–ื” ื‘ื–ื”:

# roles/api/defaults:
# ะŸะตั€ะตะผะตะฝะฝะฐั ะทะฐะฟั€ะพัะฐ
api_auth1_address: "http://example.com:80"
api_auth2_address: "http://example2.com:80"

# roles/auth/defaults:
# ะŸะตั€ะตะผะตะฝะฝะฐั ัะปัƒัˆะฐั‚ะตะปัŒ
auth_bind_port: "20000"

ื‘ื•ืื• ื ืฉื™ื ืืช ื–ื” ื‘ืžืฉืชื ื™ื ื ืคื•ืฆื™ื group_vars/all/vars ื›ืœ ื”ืžืื–ื™ื ื™ื, ื•ื”ื•ืกื™ืคื• ืืช ืฉื ื”ืงื‘ื•ืฆื” ืœืฉื:

# group_vars/all/vars
bbauth_auth_bind_port: "20000"
ghauth_auth_bind_port: "30000"

# group_vars/bbauth/vars
auth_bind_port: "{{ bbauth_auth_bind_port }}"

# group_vars/ghauth/vars
auth_bind_port: "{{ ghauth_auth_bind_port }}"

# group_vars/myapi/vars
api_auth1_address: "http://{{ bbauth_auth_service_name }}:{{ bbauth_auth_bind_port }}"
api_auth2_address: "http://{{ ghauth_auth_service_name }}:{{ ghauth_auth_bind_port }}"

ื›ืขืช, ืขืœ ื™ื“ื™ ืฉื™ื ื•ื™ ืขืจืš ื”ืžื—ื‘ืจ, ื ื”ื™ื” ื‘ื˜ื•ื—ื™ื ืฉื”ื‘ืงืฉื” ืชืขื‘ื•ืจ ืœืื•ืชื• ืžืงื•ื ื‘ื• ื ืžืฆืืช ื”ื™ืฆื™ืื”.

ืงื•ื“ ืกื’ื ื•ืŸ

  • ืžื›ื™ื•ื•ืŸ ืฉืชืคืงื™ื“ื™ื ื•ืงื‘ื•ืฆื•ืช ื”ื ืื•ื‘ื™ื™ืงื˜ื™ ืžืขืจื›ืช ืฉื•ื ื™ื, ื”ื ืฆืจื™ื›ื™ื ืœืงื‘ืœ ืฉืžื•ืช ืฉื•ื ื™ื ื›ื“ื™ ืฉืžืฉืชื ื™ ื”ืงื™ืฉื•ืจ ื™ืจืื• ื‘ืžื“ื•ื™ืง ืฉื”ื ืฉื™ื™ื›ื™ื ืœืงื‘ื•ืฆืช ืฉืจืชื™ื ืกืคืฆื™ืคื™ืช, ื•ืœื ืœืชืคืงื™ื“ ื‘ืžืขืจื›ืช.

ืงื‘ืฆื™ ืกื‘ื™ื‘ื”

ืชืคืงื™ื“ื™ื ื™ื›ื•ืœื™ื ืœื”ืฉืชืžืฉ ื‘ืงื‘ืฆื™ื ืฉื•ื ื™ื ืžืกื‘ื™ื‘ื” ืœืกื‘ื™ื‘ื”.

ืชืขื•ื“ื•ืช SSL ื”ืŸ ื“ื•ื’ืžื” ืœืงื‘ืฆื™ื ื›ืืœื”. ืื—ืกืŸ ืื•ืชื ื›ื˜ืงืกื˜
ื‘ืžืฉืชื ื” ื–ื” ืœื ืžืื•ื“ ื ื•ื—. ืื‘ืœ ื ื•ื— ืœืื—ืกืŸ ืืช ื”ื ืชื™ื‘ ืืœื™ื”ื ื‘ืชื•ืš ืžืฉืชื ื”.

ืœื“ื•ื’ืžื”, ืื ื• ืžืฉืชืžืฉื™ื ื‘ืžืฉืชื ื” api_ssl_key_file: "/path/to/file".

ืžื›ื™ื•ื•ืŸ ืฉื‘ืจื•ืจ ืฉืื™ืฉื•ืจ ื”ืžืคืชื— ื™ืฉืชื ื” ืžืกื‘ื™ื‘ื” ืœืกื‘ื™ื‘ื”, ื–ื”ื• ืžืฉืชื ื” ืชืœื•ื™ ืกื‘ื™ื‘ื”, ื›ืœื•ืžืจ ืฆืจื™ืš ืœื”ื™ื•ืช ืžืžื•ืงื ื‘ืงื•ื‘ืฅ
group_vars/myapi/vars ืžืœืื™ ืฉืœ ืžืฉืชื ื™ื, ื•ืžื›ื™ืœื™ื ืืช ื”ืขืจืš 'ืœื“ื•ื’ืžื”'.

ื”ื“ืจืš ื”ื ื•ื—ื” ื‘ื™ื•ืชืจ ื‘ืžืงืจื” ื–ื” ื”ื™ื ืœืฉื™ื ืืช ืงื•ื‘ืฅ ื”ืžืคืชื— ื‘ืžืื’ืจ ืกืคืจื™ ื”ืžืฉื—ืง ืœืื•ืจืš ื”ื ืชื™ื‘
files/prod/certs/myapi.key, ืื– ื”ืขืจืš ืฉืœ ื”ืžืฉืชื ื” ื™ื”ื™ื”:
api_ssl_key_file: "prod/certs/myapi.key". ื”ื ื•ื—ื•ืช ื˜ืžื•ื ื” ื‘ืขื•ื‘ื“ื” ืฉืœืื ืฉื™ื ื”ืื—ืจืื™ื ืขืœ ืคืจื™ืกืช ื”ืžืขืจื›ืช ืขืœ ืžืขืžื“ ืžืกื•ื™ื ื™ืฉ ื’ื ืžืงื•ื ื™ื™ืขื•ื“ื™ ืžืฉืœื”ื ื‘ืžืื’ืจ ืœืื—ืกื•ืŸ ื”ืงื‘ืฆื™ื ืฉืœื”ื. ื™ื—ื“ ืขื ื–ืืช, ื ื•ืชืจืช ืืคืฉืจื•ืช ืœืฆื™ื™ืŸ ืืช ื”ื ืชื™ื‘ ื”ืžื•ื—ืœื˜ ืœืื™ืฉื•ืจ ื‘ืฉืจืช, ื‘ืžืงืจื” ืฉื”ืชืขื•ื“ื•ืช ืžืกื•ืคืงื•ืช ืขืœ ื™ื“ื™ ืžืขืจื›ืช ืื—ืจืช.

ืžืขืžื“ื™ื ืžืจื•ื‘ื™ื ื‘ืกื‘ื™ื‘ื” ืื—ืช

ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื™ืฉ ืฆื•ืจืš ืœืคืจื•ืก ื›ืžื” ืกื˜ื ื“ื™ื ื›ืžืขื˜ ื–ื”ื™ื ื‘ืื•ืชื” ืกื‘ื™ื‘ื” ืขื ื”ื‘ื“ืœื™ื ืžื™ื ื™ืžืœื™ื™ื. ื‘ืžืงืจื” ื–ื”, ืื ื• ืžื—ืœืงื™ื ืžืฉืชื ื™ื ืชืœื•ื™ื™ ืกื‘ื™ื‘ื” ืœืืœื• ืฉืื™ื ื ืžืฉืชื ื™ื ื‘ืชื•ืš ืกื‘ื™ื‘ื” ื–ื• ื•ืœืืœื” ืฉื›ืŸ. ื•ืื ื—ื ื• ืžื•ืฆื™ืื™ื ืืช ื”ืื—ืจื•ืŸ ื™ืฉื™ืจื•ืช ืœืงื‘ืฆื™ ื”ืžืœืื™ ืขืฆืžื. ืœืื—ืจ ืžื ื™ืคื•ืœืฆื™ื” ื–ื•, ื ื™ืชืŸ ืœื™ืฆื•ืจ ืžืœืื™ ื ื•ืกืฃ ื™ืฉื™ืจื•ืช ื‘ืกืคืจื™ื™ืช ื”ืกื‘ื™ื‘ื”.

ื”ื•ื ื™ืขืฉื” ืฉื™ืžื•ืฉ ื—ื•ื–ืจ ื‘ืžืœืื™ group_vars ื•ื’ื ื™ื•ื›ืœ ืœื”ื’ื“ื™ืจ ืžื—ื“ืฉ ื›ืžื” ืžืฉืชื ื™ื ื™ืฉื™ืจื•ืช ืขื‘ื•ืจ ืขืฆืžื•.

ืžื‘ื ื” ื”ืกืคืจื™ื•ืช ื”ืกื•ืคื™ ืขื‘ื•ืจ ืคืจื•ื™ืงื˜ ื”ืคืจื™ืกื”:

mydeploy                        # ะšะฐั‚ะฐะปะพะณ ะดะตะฟะปะพั
โ”œโ”€โ”€ deploy.yml                  # ะŸะปะตะนะฑัƒะบ ะดะตะฟะปะพั
โ”œโ”€โ”€ files                       # ะšะฐั‚ะฐะปะพะณ ะดะปั ั„ะฐะนะปะพะฒ ะดะตะฟะปะพั
โ”‚   โ”œโ”€โ”€ prod                    # ะšะฐั‚ะพะปะพะณ ะดะปั ัั€ะตะดะพะทะฐะฒะธัะธะผั‹ั… ั„ะฐะนะปะพะฒ ัั‚ะตะฝะดะฐ prod
โ”‚   โ”‚   โ””โ”€โ”€ certs               # 
โ”‚   โ”‚       โ””โ”€โ”€ myapi.key       #
โ”‚   โ””โ”€โ”€ test1                   # ะšะฐั‚ะฐะปะพะณ ะดะปั ัั€ะตะดะพะทะฐะฒะธัะธะผั‹ั… ั„ะฐะนะปะพะฒ ัั‚ะตะฝะดะฐ test1
โ”œโ”€โ”€ group_vars                  # ะšะฐั‚ะฐะปะพะณ ะฟะตั€ะตะผะตะฝะฝั‹ั… ะฟะปะตะนะฑัƒะบะฐ
โ”‚   โ”œโ”€โ”€ all.yml                 # ะคะฐะนะป ะดะปั ะฟะตั€ะตะผะตะฝะฝั‹ั… ัะฒัะทะธ ะฒัะตะน ัะธัั‚ะตะผั‹
โ”‚   โ”œโ”€โ”€ myapi.yml               # ะคะฐะนะป ะฟะตั€ะตะผะตะฝะฝั‹ั… ัะฒะพะนัั‚ะฒ ะณั€ัƒะฟะฟั‹ myapi
โ”‚   โ”œโ”€โ”€ bbauth.yml              # 
โ”‚   โ””โ”€โ”€ ghauth.yml              #
โ””โ”€โ”€ inventories                 #
    โ”œโ”€โ”€ prod                    # ะšะฐั‚ะฐะปะพะณ ะพะบั€ัƒะถะตะฝะธั prod
    โ”‚   โ”œโ”€โ”€ group_vars          # ะšะฐั‚ะฐะปะพะณ ะดะปั ะฟะตั€ะตะผะตะฝะฝั‹ั… ะธะฝะฒะตะฝั‚ะพั€ะธ
    โ”‚   โ”‚   โ”œโ”€โ”€ myapi           #
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ vars.yml    # ะกั€ะตะดะพะทะฐะฒะธัะธะผั‹ะต ะฟะตั€ะตะผะตะฝะฝั‹ะต ะณั€ัƒะฟะฟั‹ myapi
    โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ vault.yml   # ะกะตะบั€ะตั‚ั‹ (ะฒัะตะณะดะฐ ัั€ะตะดะพะทะฐะฒะธัะธะผั‹)
    โ”‚   โ”‚   โ”œโ”€โ”€ bbauth          # 
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ vars.yml    #
    โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ vault.yml   #
    โ”‚   โ”‚   โ””โ”€โ”€ ghauth          #
    โ”‚   โ”‚       โ”œโ”€โ”€ vars.yml    #
    โ”‚   โ”‚       โ””โ”€โ”€ vault.yml   #
    โ”‚   โ””โ”€โ”€ prod.ini            # ะ˜ะฝะฒะตะฝั‚ะพั€ะธ ัั‚ะตะฝะดะฐ prod
    โ””โ”€โ”€ test                    # ะšะฐั‚ะฐะปะพะณ ะพะบั€ัƒะถะตะฝะธั test
        โ”œโ”€โ”€ group_vars          #
        โ”‚   โ”œโ”€โ”€ myapi           #
        โ”‚   โ”‚   โ”œโ”€โ”€ vars.yml    #
        โ”‚   โ”‚   โ””โ”€โ”€ vault.yml   #
        โ”‚   โ”œโ”€โ”€ bbauth          #
        โ”‚   โ”‚   โ”œโ”€โ”€ vars.yml    #
        โ”‚   โ”‚   โ””โ”€โ”€ vault.yml   #
        โ”‚   โ””โ”€โ”€ ghauth          #
        โ”‚       โ”œโ”€โ”€ vars.yml    #
        โ”‚       โ””โ”€โ”€ vault.yml   #
        โ”œโ”€โ”€ test1.ini           # ะ˜ะฝะฒะตะฝั‚ะพั€ะธ ัั‚ะตะฝะดะฐ test1 ะฒ ัั€ะตะดะต test
        โ””โ”€โ”€ test2.ini           # ะ˜ะฝะฒะตะฝั‚ะพั€ะธ ัั‚ะตะฝะดะฐ test2 ะฒ ัั€ะตะดะต test

ืกื™ื›ื•ื

ืœืื—ืจ ืืจื’ื•ืŸ ื”ืžืฉืชื ื™ื ื‘ื”ืชืื ืœืžืืžืจ: ื›ืœ ืงื•ื‘ืฅ ืขื ืžืฉืชื ื™ื ืื—ืจืื™ ืขืœ ืžืฉื™ืžื” ืกืคืฆื™ืคื™ืช. ื•ืžื›ื™ื•ื•ืŸ ืฉืœืงื•ื‘ืฅ ื™ืฉ ืžืฉื™ืžื•ืช ืžืกื•ื™ืžื•ืช, ื ื™ืชืŸ ื”ื™ื” ืœื”ืงืฆื•ืช ืื—ืจืื™ ืขืœ ืชืงื™ื ื•ืช ื›ืœ ืงื•ื‘ืฅ. ืœื“ื•ื’ืžื”, ืžืคืชื— ืคืจื™ืกืช ื”ืžืขืจื›ืช ื”ื•ืคืš ืœื”ื™ื•ืช ืื—ืจืื™ ืœืžื™ืœื•ื™ ื ื›ื•ืŸ ืฉืœ ืžืฉืชื ื™ ื”-Playbook, ื‘ืขื•ื“ ืฉื”ืžื ื”ืœ, ืฉื”ืขืžื“ื” ืฉืœื• ืžืชื•ืืจืช ื‘ืžืœืื™, ืื—ืจืื™ ื™ืฉื™ืจื•ืช ืœืžื™ืœื•ื™ ืžืœืื™ ื”ืžืฉืชื ื™ื.

ืชืคืงื™ื“ื™ื ื”ืคื›ื• ืœื™ื—ื™ื“ืช ืคื™ืชื•ื— ืขืฆืžืื™ืช ืขื ืžืžืฉืง ืžืฉืœื”ื, ืžื” ืฉืžืืคืฉืจ ืœืžืคืชื— ื”ืชืคืงื™ื“ ืœืคืชื— ืชื›ื•ื ื•ืช ื‘ืžืงื•ื ืœื”ืชืื™ื ืืช ื”ืชืคืงื™ื“ ื›ืš ืฉื™ืชืื™ื ืœืžืขืจื›ืช. ื ื•ืฉื ื–ื” ื”ื™ื” ื ื›ื•ืŸ ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ ืชืคืงื™ื“ื™ื ืžืฉื•ืชืคื™ื ืœื›ืœ ื”ืžืขืจื›ื•ืช ื‘ืงืžืคื™ื™ืŸ.

ืžื ื”ืœื™ ืžืขืจื›ืช ื›ื‘ืจ ืœื ืฆืจื™ื›ื™ื ืœื”ื‘ื™ืŸ ืืช ืงื•ื“ ื”ืคืจื™ืกื”. ื›ืœ ืžื” ืฉื ื“ืจืฉ ืžื”ื ืœืคืจื™ืกื” ืžื•ืฆืœื—ืช ื”ื•ื ืœืžืœื ืืช ื”ืงื‘ืฆื™ื ืฉืœ ืžืฉืชื ื™ ื”ืกื‘ื™ื‘ื”.

ืกืคืจื•ืช

  1. ืจืฉื•ืžื•ืช

ืžื—ื‘ืจ

ืงืœื•ื–'ื ื™ ื“ื ื™ืก ืืœื›ืกื ื“ืจื•ื‘ื™ืฅ'

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”