ansible devops codestyle
E! ʻO_____ koʻu inoa.
Hāʻawi kēia alakaʻi i kahi ala e hoʻonohonoho ai i nā loli i ka hoʻolaha. Kuhi ʻia kēia alakaʻi no ka poʻe i hoʻohana mua i nā kuleana ma kā lākou mau puke pāʻani a heluhelu
- I ka loaʻa ʻana o kahi loli i ke code, hiki ʻole ke hoʻomaopopo koke i ke kuleana o ia;
- Nui nā kuleana, a pono e hoʻopili ʻia nā mea hoʻololi i hoʻokahi waiwai, akā ʻaʻole pono;
- Paʻakikī i ka wehewehe ʻana i nā poʻe ʻē aʻe i ka hana ʻana o ka loina o nā ʻano like ʻole i kāu puke pāʻani
Ua loaʻa iā mākou kēia mau pilikia ma nā papahana i kā mākou hui, a no laila mākou i hele ai i nā lula no ka hoʻolālā ʻana i nā ʻano like ʻole i kā mākou papa pāʻani, kahi i hoʻoponopono ai i kēia mau pilikia.
Nā mea hoʻololi i nā kuleana
He kuleana kaawale o ka ʻōnaehana hoʻolaha. E like me nā mea ʻōnaehana, pono e loaʻa kahi interface no ka launa pū ʻana me ke koena o ka ʻōnaehana. ʻO ia ʻano interface he mau ʻano loli.
E lawe kākou i ka hana api
, ka mea e hoʻokomo i kahi polokalamu Java ma ke kikowaena. He aha nā mea hoʻololi i loaʻa iā ia?
Hiki ke hoʻokaʻawale ʻia nā ʻano like ʻole i 2 mau ʻano e like me ke ʻano:
1. Свойства
a) независимые от среды
б) зависимые от среды
2. Связи
a) слушатели
б) запросы внутри системы
в) запросы в среду
Nā waiwai hoʻololi he mau ʻano hoʻololi e hoʻoholo i ke ʻano o kahi kuleana.
Huli Huli - ʻo ia nā mea hoʻololi i hoʻohana ʻia ka waiwai e koho i nā kumuwaiwai ma waho o ka hana.
Nā mea hoʻolohe hoʻololi — ʻo ia nā mea hoʻololi i hoʻohana ʻia ka waiwai e hana i nā mea hoʻololi noi.
Ma ka ʻaoʻao ʻē aʻe, ʻo 1a, 2a, 2b nā ʻano like ʻole i hilinaʻi ʻole i ke kaiapuni (mea paʻa, nā kumuwaiwai o waho, a me nā mea ʻē aʻe) a hiki ke hoʻopiha ʻia me nā waiwai paʻamau i ka hana paʻamau. Eia nō naʻe, ʻaʻole hiki ke hoʻopiha i nā ʻano ʻano 1.b a me 2.c me nā waiwai ʻē aʻe ma mua o ka 'hoʻohālike', no ka mea, e hoʻololi lākou mai kahi kū a kū i ke kaiapuni.
Kāhua code
- Pono e hoʻomaka ka inoa hoʻololi me ka inoa kuleana. He mea maʻalahi kēia e noʻonoʻo ai i ka wā e hiki mai ana i ke ʻano o ka mea hoʻololi a me ke kuleana o ia.
- I ka hoʻohana ʻana i nā mea hoʻololi i nā kuleana, pono ʻoe e hahai i ke kumu o ka encapsulation a hoʻohana i nā mea hoʻololi i wehewehe ʻia ma ke kuleana ponoʻī a i ʻole i nā kuleana i hilinaʻi ʻia ai ka mea o kēia manawa.
-
E hōʻalo i ka hoʻohana ʻana i nā puke wehewehe ʻōlelo no nā mea hoʻololi. ʻAʻole ʻae ʻo Ansible iā ʻoe e hoʻopau maʻalahi i nā waiwai pilikino i loko o kahi puke wehewehe.
Ka laʻana o kahi hoʻololi maikaʻi ʻole:
myrole_user: login: admin password: admin
Eia ka hoʻopaʻa inoa ʻo ia ka hoʻololi kūʻokoʻa, a ʻo ka ʻōlelo huna ka mea hoʻololi hilinaʻi. Akā
no ka mea, ua hui pū ʻia lākou i loko o ka puke wehewehe ʻōlelo, pono ʻoe e hōʻike piha
mau. He mea kūpono ʻole. ʻOi aku ka maikaʻi ma kēia ala:myrole_user_login: admin myrole_user_password: admin
Nā mea hoʻololi i nā puke pāʻani hoʻolaha
Ke hōʻuluʻulu ʻana i kahi puke pāʻani hoʻolaha (i kapa ʻia ma hope aku ʻo ka playbook), mālama mākou i ka lula e waiho ʻia i loko o kahi waihona ʻokoʻa. E like me nā kuleana: kēlā me kēia ma kāna waihona git ponoʻī. ʻAe kēia iā ʻoe e hoʻomaopopo he mau mea kūʻokoʻa kūʻokoʻa nā kuleana a me nā puke pāʻani o ka ʻōnaehana hoʻolaha, a ʻaʻole pono e hoʻololi i ka hana o kekahi. Loaʻa kēia ma ka hoʻololi ʻana i nā waiwai paʻamau o nā mea hoʻololi.
I ka hōʻuluʻulu ʻana i kahi puke pāʻani, i ka hōʻuluʻulu ʻana, hiki ke hoʻopau i nā koina paʻamau o nā mea hoʻololi kuleana ma nā wahi ʻelua: i nā ʻano pāʻani pāʻani a me nā ʻano helu waihona.
mydeploy # Каталог деплоя
├── deploy.yml # Плейбук деплоя
├── group_vars # Каталог переменных плейбука
│ ├── all.yml # Файл для переменных связи всей системы
│ └── myapi.yml # Файл переменных свойств группы myapi
└── inventories #
└── prod # Каталог окружения prod
├── prod.ini # Инвентори файл
└── group_vars # Каталог для переменных инвентори
└── myapi #
├── vars.yml # Средозависимые переменные группы myapi
└── vault.yml # Секреты (всегда средозависимы) *
* -
ʻO ka ʻokoʻa, hoʻohana mau ʻia nā ʻano pāʻani pāʻani i ke kāhea ʻana i nā puke pāʻani ma ka pae like me ia. ʻO ia ke ʻano he mea maikaʻi kēia mau ʻano no ka hoʻololi ʻana i nā waiwai paʻamau o nā ʻano like ʻole kaiapuni. ʻO ka mea ʻē aʻe, e hoʻohana wale ʻia nā mea hoʻololi waiwai no kahi kaiapuni kikoʻī, kahi kūpono no nā ʻano hoʻololi pili kaiapuni.
He mea nui e hoʻomaopopo ʻaʻole e ʻae ʻia ka mea nui e hoʻololi iā ʻoe i ka hoʻololi mua i nā mea hoʻololi puke pāʻani a laila kaʻawale i hoʻokahi waihona.
'O ia ho'i, i kēia manawa, pono e ho'oholo i ka pili o ke kaiapuni a i 'ole ka ho'ololi a waiho i kahi kūpono.
No ka laʻana, ma hoʻokahi papahana, ʻo ka mea hoʻololi i kuleana no ka hiki ʻana iā SSL ke hilinaʻi i ke kaiapuni no ka manawa lōʻihi, ʻoiai ʻaʻole hiki iā mākou ke hoʻohana iā SSL no nā kumu ma waho o ko mākou mana ma kekahi o nā kū. Ma hope o ko mākou hoʻoponopono ʻana i kēia pilikia, ua lilo ia i kaiapuni kūʻokoʻa a neʻe i nā ʻano pāʻani puke.
Nā Waiwai no nā Pūʻulu
E hoʻonui i kā mākou kumu hoʻohālike ma ke Kiʻi 1 ma ka hoʻohui ʻana i nā pūʻulu 2 o nā kikowaena me kahi palapala Java ʻokoʻa, akā me nā hoʻonohonoho ʻokoʻa.
E noʻonoʻo kākou i ke ʻano o ka puke pāʻani ma kēia hihia:
- hosts: myapi
roles:
- api
- hosts: bbauth
roles:
- auth
- hosts: ghauth
roles:
- auth
Loaʻa iā mākou ʻekolu mau pūʻulu i loko o ka puke pāʻani, no laila ua ʻōlelo koke ʻia e hana i ka helu like o nā faila hui ma group_vars inventory variables a me playbook variables. Hoʻokahi waihona pūʻulu ma kēia hihia he wehewehe ʻana i hoʻokahi ʻāpana o ka noi ma luna ma ka puke pāʻani. Ke wehe ʻoe i kahi faila hui i nā ʻano like ʻole o ka puke pāʻani, ʻike koke ʻoe i nā ʻokoʻa āpau mai ka hana paʻamau o nā kuleana i kau ʻia ma ka hui. I loko o nā ʻano hoʻololi: ʻokoʻa i ka hana pūʻulu mai kahi kū a kū.
Kāhua Code
- E ho'āʻo e hoʻohana i ka host_vars variable i nā mea a pau, no ka mea, ʻaʻole lākou e wehewehe i ka ʻōnaehana, akā he hihia kūikawā wale nō, i ka wā e hiki mai ana e alakaʻi i nā nīnau: "No ke aha i ʻokoʻa ai kēia mea hoʻokipa mai nā mea ʻē aʻe?", ʻO ka pane ʻaʻole ia. maʻalahi i nā manawa a pau.
Nā hoʻololi kamaʻilio
Eia nō naʻe, ʻo ia ka mea e pili ana i nā mea hoʻololi waiwai, akā pehea e pili ana i nā mea hoʻololi kamaʻilio?
ʻO kā lākou ʻokoʻa, ʻo ia ka manaʻo like i nā hui like ʻole.
I ka manawa mua
hostvars[groups['bbauth'][0]]['auth_bind_port']
, ua hoole koke lakou
no ka mea, he mau hemahema kona. ʻO ka mea mua, ka bulkiness. ʻO ka lua, ʻo ka hilinaʻi ʻana i kahi mea hoʻokipa kūikawā i ka hui. ʻO ke kolu, ma mua o ka hoʻomaka ʻana, pono e hōʻiliʻili i nā ʻoiaʻiʻo mai nā pūʻali āpau inā ʻaʻole mākou makemake e loaʻa kahi hewa o kahi ʻano ʻike ʻole.
ʻO ka hopena, ua hoʻoholo ʻia e hoʻohana i nā loli kamaʻilio.
Nā hoʻololi kamaʻilio - he mau mea hoʻololi kēia no ka puke pāʻani a pono e hoʻohui i nā mea ʻōnaehana.
Hoʻopili ʻia nā mea hoʻololi kamaʻilio ma nā ʻōnaehana maʻamau group_vars/all/vars
a ua hoʻokumu ʻia ma ka wehe ʻana i nā mea hoʻolohe a pau mai kēlā me kēia pūʻulu, a hoʻohui i ka inoa o ka hui kahi i wehe ʻia ai ka mea hoʻolohe i ka hoʻomaka o ka hoʻololi.
Mālama kēia i ka like ʻole a me ka ʻole o ke kau ʻana o nā inoa.
E ho'āʻo kākou e hoʻopaʻa i nā mea hoʻololi mai ka laʻana ma luna:
E noʻonoʻo kākou he mau ʻokoʻa kā mākou e pili ana i kekahi i kekahi:
# roles/api/defaults:
# Переменная запроса
api_auth1_address: "http://example.com:80"
api_auth2_address: "http://example2.com:80"
# roles/auth/defaults:
# Переменная слушатель
auth_bind_port: "20000"
E hoʻokomo i loko o nā mea hoʻololi maʻamau group_vars/all/vars
nā mea hoʻolohe a pau, a hoʻohui i ka inoa o ka hui i ke poʻo inoa:
# 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 }}"
I kēia manawa, ma ka hoʻololiʻana i ka waiwai o ka mea hoʻohui, e maopopo iā mākou e hele ka noi i kahi hoʻokahi kahi i loaʻa ai ke awa.
Kāhua Code
- No ka mea he ʻano ʻōnaehana ʻokoʻa nā kuleana a me nā pūʻulu, pono lākou e loaʻa nā inoa ʻokoʻa, a laila e hōʻike pololei nā mea hoʻololi loulou i kahi hui kikoʻī o nā kikowaena, ʻaʻole i kahi kuleana i ka ʻōnaehana.
Nā faila pili kaiapuni
Hiki i nā kuleana ke hoʻohana i nā faila i ʻokoʻa i kēlā me kēia wahi.
ʻO kahi laʻana o ia mau faila he palapala SSL. E mālama iā lākou ma ke ʻano kikokikona
ma kahi hoʻololi ʻaʻole kūpono loa. Akā ʻoi aku ka maʻalahi o ka mālama ʻana i ke ala iā lākou i loko o kahi loli.
No ka laʻana, hoʻohana mākou i ka mea hoʻololi api_ssl_key_file: "/path/to/file"
.
No ka mea ʻike maopopo ʻia e hoʻololi ʻia ka palapala kī mai ke kaiapuni i ke kaiapuni, he ʻano hoʻololi pili kaiapuni kēia, ʻo ia hoʻi, pono ia e waiho i ka faila.
group_vars/myapi/vars
papa helu o nā mea hoʻololi, a loaʻa ka waiwai 'no ka laʻana'.
ʻO ke ala kūpono loa i kēia hihia, ʻo ia ke kau ʻana i ka faila kī i loko o ka waihona puke pāʻani ma ke ala
files/prod/certs/myapi.key
, a laila ʻo ka waiwai o ka hoʻololi:
api_ssl_key_file: "prod/certs/myapi.key"
. Aia ka ʻoluʻolu i ka ʻoiaʻiʻo o ka poʻe kuleana no ka lawe ʻana i ka ʻōnaehana ma kahi kū kikoʻī i loaʻa i kā lākou wahi i hoʻolaʻa ʻia i loko o ka waihona e mālama ai i kā lākou faila. I ka manawa like, hiki nō ke kuhikuhi i ke ala kūpono i ka palapala hōʻoia ma ka kikowaena, inā hāʻawi ʻia nā palapala hōʻoia e kahi ʻōnaehana ʻē aʻe.
Kū nui i loko o hoʻokahi kaiapuni
ʻO ka manawa pinepine he pono e hoʻonoho i kekahi mau kū like i loko o kahi kaiapuni like me nā ʻokoʻa liʻiliʻi. I kēia hihia, hoʻokaʻawale mākou i nā mea hoʻololi pili kaiapuni i loko o nā mea i loli ʻole i loko o kēia kaiapuni a me nā mea e loli. A hoʻoili pololei mākou i ka hope i nā faila waihona iā lākou iho. Ma hope o kēia manipulation, hiki iā ia ke hana i kahi papa inoa ʻē aʻe ma ka papa kuhikuhi kaiapuni.
E hoʻohana hou ia i ka group_vars inventory, a hiki iā ia ke wehewehe hou i kekahi mau ʻokoʻa pono nona iho.
ʻO ka papa kuhikuhi hope loa no ka papahana hoʻolālā:
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
ʻO ka hōʻuluʻulu ʻana
Ma hope o ka hoʻonohonoho ʻana i nā mea hoʻololi e like me ka ʻatikala: ʻo kēlā me kēia faila ke kuleana no kahi hana kikoʻī. A no ka loaʻa ʻana o kekahi mau hana i ka faila, ua hiki ke koho i kekahi kuleana no ka pololei o kēlā me kēia faila. No ka laʻana, lilo ka mea hoʻomohala o ka hoʻonohonoho ʻōnaehana i ke kuleana no ka hoʻopiha pololei ʻana i nā ʻano pāʻani pāʻani, ʻoiai ʻo ka luna hoʻomalu i wehewehe ʻia kona kūlana i loko o ka waihona waiwai ke kuleana kūpono no ka hoʻopiha ʻana i ka waihona o nā mea hoʻololi.
Ua lilo ʻo Roles i kā lākou ʻāpana hoʻomohala ponoʻī me kā lākou iho ponoʻī, e ʻae ana i ka mea hoʻomohala hana e hoʻomohala i nā mana ma mua o ka hoʻohālikelike ʻana i ke kuleana i ka ʻōnaehana. Pili kēia pilikia i nā kuleana maʻamau no nā ʻōnaehana āpau i ka hoʻolaha.
ʻAʻole pono nā luna hoʻoponopono e hoʻomaopopo hou i ka code deployment code. ʻO nā mea a pau e koi ʻia iā lākou no ka hoʻolaha kūleʻa ʻana, ʻo ia ka hoʻopiha ʻana i nā faila o nā mea hoʻololi pili kaiapuni.
Paipalapala
mea kākau
Kalyuzhny Denis Alexandrovich
Source: www.habr.com