Използвайки Ansible, можете да извършвате различни операции на отдалечени машини, като използвате сурови команди или книги за игра Ansible. По подразбиране Ansible playbook се изпълнява на отдалечения хост като същия потребител на Ansible контролера. Това означава, че ако трябва да изпълните команда като друг потребител на отдалечената машина, ще трябва да я посочите изрично във вашата Ansible playbook.
За да приложите функционалността на изпълняваните команди като друг потребител, ще трябва да използвате функцията sudo, която е налична в Linux системи. Директивата Ansible become ви позволява да изпълнявате команди като посочения потребител.
Информацията за потребителя се посочва в Ansible playbook, като се използват променливите become, като become_pass, за да се посочи паролата на потребителя become_user, както и кой потребител може да изпълни командата.
Как да стартирам отговорни задачи като корен
За да изпълните конкретна команда като root потребител в Ansible, можете да приложите директивата Станете и да зададете стойността на 'true.'Правейки това, казва на Ansible да внедри sudo без аргументи при изпълнение на командата.
Например, помислете за Ansible playbook, който актуализира пакета MySQL-сървър и след това го рестартира. При нормални операции на Linux ще трябва да влезете като root потребител, за да изпълнявате такива задачи. В Ansible можете просто да извикате директивата become: yes, както е показано по-долу:
- домакини: всичкиставам: да
задачи:
- name: Ansible стартира като root и актуализира sys
yum:
име: mysql-сървър
състояние: последно
- име:
обслужване.обслужване:
име: mysqld
състояние: рестартирано
В горната книга за игри използвахме директивата Станете и не посочихме потребителя Стани_потребител, тъй като всички команди по директивата Стани по подразбиране се изпълняват като root.
Това е подобно на определянето му като:
- домакини: всичкиставам: да
станете_потребител: корен
задачи:
- name: Ansible стартира като root и актуализира sys
yum:
име: mysql-сървър
състояние: последно
- име: услуга.обслужване:
име: mysqld
състояние: рестартирано
Как да стартирате отговорни задачи като Sudo
За да стартирате Ansible задача като конкретен потребител, а не като обикновен потребител на root, можете да използвате директивата become_user и да предадете потребителското име на потребителя за изпълнение. Това е подобно на използването на командата sudo -u в Unix.
За да приложите директивата become_user, първо трябва да активирате директивата become, тъй като become_user е неизползваем без тази директива да е активирана.
Помислете за следната книга за игра, в която командата се изпълнява като никой потребител.
- name: Изпълнете команда като друг потребител (никой)команда: ps aux
станете: истина
станете_метод: su
станете_потребител: никой
become_flags: '-s / bin / bash'
В горния фрагмент на playbook внедрихме директивите станете, станете_потребител и други станете.
- станете_метод: Това задава метода за повишаване на привилегиите, като su или sudo.
- директива_за потребител: Това определя потребителя да изпълнява командата като; това не означава да стане: да.
- станете_ флагчета: Това задава флаговете, които да се използват за посочената задача.
Вече можете да стартирате горната книга за игри с името на файла ansible-playbook.yml и вижте резултата сами. За задачи с изход може да се наложи да внедрите модула за отстраняване на грешки.
Как да стартирам Ansible ставам с парола
За да стартирате директива за ставане, която изисква парола, можете да кажете на Ansible да поиска парола при извикване на посочената книга за игра.
Например, за да стартирате книга за игри с парола, въведете командата по-долу:
ansible-playbook become_pass.yml --ask-become-passМожете също да посочите флага -K, който изпълнява операции, подобни на горната команда. Например:
ansible-playbook become_pass.yml -KСлед като бъдете посочени, ще бъдете подканени да въведете парола, когато задачите се изпълняват.
ЗАБЕЛЕЖКА: Можете също да използвате директивата Стани в суровите команди на Ansible AD HOC, използвайки флага -b. За да научите повече, вижте документацията, предоставена по-долу:
https: // linkfy.to / becomeDocumentation
Заключение
След като прочетете тази статия, сега трябва да знаете как да използвате директивата Ansible BECOME за извършване на ескалация на привилегии за различни задачи.
От съображения за сигурност е по-добре да приложите ограничения за различни акаунти и изрично да посочите кога те се използват. Така че, ескалацията на привилегии е важен аспект от използването на sudo и su в Ansible.