Pomocí Ansible můžete provádět různé operace na vzdálených počítačích pomocí surových příkazů nebo Ansible playbooků. Ve výchozím nastavení se hra Ansible na vzdáleném hostiteli spouští jako stejný uživatel na řadiči Ansible. To znamená, že pokud potřebujete spustit příkaz jako jiný uživatel na vzdáleném počítači, budete jej muset výslovně zadat ve své příručce Ansible.
Chcete-li implementovat funkce spouštění příkazů jako jiný uživatel, budete muset použít funkci sudo, která je k dispozici v systémech Linux. Direktiva Ansible become vám umožňuje spouštět příkazy jako zadaný uživatel.
Informace o uživateli jsou specifikovány v příručce Ansible, která používá proměnné become, jako třeba become_pass, k určení hesla uživatele become_user a také toho, který uživatel může příkaz spustit.
Jak spouštět možné úkoly jako root
Chcete-li spustit konkrétní příkaz jako uživatel root v Ansible, můžete implementovat direktivu become a nastavit hodnotu na 'true.„Tímto způsobem řeknete Ansible implementovat sudo bez argumentů při spuštění příkazu.
Zvažte například příručku Ansible, která aktualizuje balíček serveru MySQL a poté jej restartuje. V běžných operacích Linuxu byste se k provádění těchto úkolů museli přihlásit jako uživatel root. V Ansible můžete jednoduše zavolat direktivu become: yes, jak je znázorněno níže:
- hostitelé: všichnistát se: ano
úkoly:
- name: Možné spuštění jako root a aktualizace sys
Mňam:
název: mysql-server
stát: nejnovější
- název:
servis.servis:
jméno: mysqld
stav: restartován
Ve výše uvedené příručce jsme použili direktivu become a nezadali jsme uživatele become_user, protože všechny příkazy v rámci direktivy become jsou standardně spouštěny jako root.
Je to podobné jako zadání jako:
- hostitelé: všichnistát se: ano
become_user: root
úkoly:
- name: Možné spuštění jako root a aktualizace sys
Mňam:
název: mysql-server
stát: nejnovější
- název: služba.servis:
jméno: mysqld
stav: restartován
Jak spouštět možné úkoly jako Sudo
Chcete-li spustit úlohu Ansible jako konkrétního uživatele, nikoli jako normální uživatel root, můžete k provedení úlohy použít direktivu become_user a předat uživatelské jméno uživatele. Je to jako s použitím příkazu sudo -u v Unixu.
Chcete-li implementovat direktivu become_user, musíte nejprve aktivovat direktivu become, protože the become_user je nepoužitelný bez aktivace této směrnice.
Zvažte následující příručku, ve které je příkaz spuštěn jako nikdo.
- name: Spustit příkaz jako jiný uživatel (nikdo)příkaz: ps aux
stát se: pravda
stát se_metodou: su
become_user: nikdo
become_flags: '-s / bin / bash'
Ve výše uvedeném fragmentu příručky jsme implementovali direktivy become, become_user a other become.
- stát se_metodou: Tím se nastaví metoda eskalace oprávnění, například su nebo sudo.
- direktiva become_user: Toto určuje uživatele, který má spustit příkaz jako; to neznamená, že se stane: ano.
- stát se_vlajky: Nastaví příznaky, které se mají použít pro zadanou úlohu.
Nyní můžete spustit výše uvedenou příručku s názvem souboru ansible-playbook.yml a výsledek uvidíte sami. U úkolů s výstupem možná budete muset implementovat ladicí modul.
Jak spustit Ansible se stane s heslem
Chcete-li spustit direktivu, která vyžaduje heslo, můžete říct Ansible, aby při vyvolání zadaného playbooku požádal o heslo.
Chcete-li například spustit příručku s heslem, zadejte následující příkaz:
ansible-playbook become_pass.yml --ask-pass-passMůžete také určit příznak -K, který provádí podobné operace jako výše uvedený příkaz. Například:
ansible-playbook become_pass.yml -KPo zadání budete při provádění úloh vyzváni k zadání hesla.
POZNÁMKA: Můžete také použít direktivu become v Ansible AD HOC raw příkazech pomocí parametru -b. Další informace najdete v níže uvedené dokumentaci:
https: // linkfy.do / stát se dokumentací
Závěr
Po přečtení tohoto článku byste nyní měli vědět, jak pomocí direktivy Ansible BECOME provádět eskalaci oprávnění pro různé úkoly.
Z bezpečnostních důvodů je lepší implementovat omezení pro různé účty a výslovně určit, kdy se používají. Eskalace oprávnění je tedy důležitým aspektem používání sudo a su v Ansible.