Настройка SSH-аутентификации без пароля на управляемые узлы
Напомним, что в нашем последнем разделе управление удаленными узлами с помощью Ansible требует настройки SSH-аутентификации без пароля между узлом управления Ansible и управляемыми узлами.
Это включает в себя генерацию пары ключей (пара открытых и закрытых ключей SSH) на узле Ansible Control и копирование открытого ключа на все удаленные хосты.
Это будет решающим шагом вперед и сделает вашу работу намного проще.
Траблшутинг:
Настройте повышение привилегий на управляемых узлах
Когда вы вошли в систему как обычный пользователь, вам может потребоваться выполнить определенные задачи на управляемых узлах, которые требуют повышенных привилегий или привилегий root.
Эти задачи включают управление пакетами, добавление новых пользователей и групп, а также изменение конфигурации системы.
Чтобы достичь этого, вам нужно вызвать определенные директивы в playbook для запуска задач от имени привилегированного пользователя на удаленных хостах.
Ansible позволяет вам «стать» другим пользователем на управляемом узле, отличном от того, который в данный момент вошел в систему.
become
Директива become:yes
повышает ваши привилегии и позволяет вам выполнять задачи, требующие привилегий root, такие как установка и обновление пакетов и перезагрузка системы.
--- - name: install and start Apache webserver hosts: webservers tasks: - name: install httpd yum: name=httpd state=latest become: yes - name: check httpd status service: name=httpd state=started
become:yes
позволяет вам выполнять команды от имени пользователя root на удаленном хосте.become_user
Она позволяет вам переключаться на пользователя sudo на удаленном хосте при входе в систему, а не на пользователя, под которым вы входите.
Например, чтобы запустить команду от имени пользователя tecmint на удаленном компьютере, используйте директиву, как показано ниже.
- name: Run a command as the apache user command: somecommand become: yes become_user: tecmint
become_method
become_flags
Они используются на уровне play или task, например, когда вам нужно переключиться на пользователя, когда оболочка установлена на nologin.
Например,
- name: Run a command as nobody command: somecommand become: true become_method: su become_user: nobody become_flags: '-s /bin/sh'
Параметры командной строки в повышении привилегий
Давайте рассмотрим некоторые параметры командной строки, которые вы можете использовать для повышения своих привилегий при запуске команд:
--ask-become-pass
, -K
– Это запросит у вас пароль пользователя sudo в удаленной системе, к которой вы пытаетесь подключиться.
$ ansible-playbook myplaybook.yml --ask-become-pass
--become
, -b
– Это позволяет запускать задачу как пользователь root без запроса пароля.
$ ansible-playbook myplaybook.yml --become
--become-user=BECOME_USER
– Это позволяет запускать задачи от имени другого пользователя.
$ ansible-playbook myplaybook.yml --become-user=tecmint
Проверьте рабочую конфигурацию, используя специальные команды Ansible
Иногда вам может потребоваться выполнить быстрые и простые задачи на удаленных хостах или серверах в Ansible без необходимости создавать плейбук.
В этом случае вам потребуется выполнить специальную команду.
Что такое команда Adhoc?
Специальная команда ansible adhoc – это однострочная команда, которая помогает вам выполнять простые задачи простым, но эффективным способом без необходимости создавать списки воспроизведения.
Такие задачи включают в себя копирование файлов между узлами, перезагрузку серверов, добавление и удаление пользователей и установку одного пакета.
В этом уроке мы рассмотрим различные применения команд Ansible Ad-Hoc.
Мы собираемся использовать файл инвентори для демонстрации:
[webservers] 173.82.115.165 [database_servers] 173.82.202.239
Основное использование команд Adhoc
Самое основное использование команд Ansible-Adhoc – это пинг хоста или группы хостов.
# ansible -m ping all
# ansible -m ping webservers
# ansible -a "uptime" all
# ansible -a "df -Th" all
# ansible-doc -l
# ansible-doc module_name
# ansible-doc yum
Управление пакетами / сервисами с помощью Ansible
Ansible adhoc команды могут использоваться для установки и удаления пакетов с помощью менеджеров пакетов yum и apt.
Чтобы установить веб-сервер Apache на хост CentOS 7 в группе веб-серверов в файле инвентаризации, выполните команду:
# ansible webservers -m yum -a "name=httpd state=present"
# rpm -qa | grep httpd
# ansible webservers -m yum -a "name=httpd state=absent"
# rpm -qa | grep httpd
Создание пользователей и групп с помощью Ansible
При создании пользователей пригодится модуль «user».
Чтобы создать нового пользователя james с паролем redhat на клиентской системе database_server, введите команду.
# ansible database_server -m user -a "name=james password=redhat"
# ansible database_servers -a "id james"
# ansible database_servers -m user -a "name=james state=absent"
Повышение привилегий
Если вы используете Ansible как обычный пользователь, Ansible обеспечивает повышение привилегий на удаленных хостах, используя опцию –become для получения корневых привилегий и -k для запроса пароля.
Например, чтобы запустить команду Ansible adhoc ‘netstat -pnltu‘ с привилегированной опцией –-become и опцией -K, чтобы запросить пароль пользователя root для запуска команды.
$ ansible webservers -m shell -a 'netstat -pnltu' --become -K
Чтобы стать другим пользователем, кроме root, используйте атрибут –become-user.
Например, чтобы запустить «df -Th» от имени пользователя itisgood на удаленных хостах и запросить пароль, выполните:
$ ansible all -m shell -a 'df -Th' --become-user itisgood -K
Сбор фактов о хост-системах
Facts относятся к подробной информации о системе.
Это включает информацию об IP-адресе, архитектуре системы, памяти и процессоре.
Чтобы получить информацию об удаленных хостах, выполните команду:
$ ansible all -m setup
Передача файлов / Копирование файлов
Ansible использует модуль copy для безопасного копирования файлов из элемента управления Ansible на несколько удаленных хостов.
Ниже приведен пример операции копирования:
# ansible webservers -m copy -a "src=/var/log/secure dest=/tmp/"
Команда копирует файл /var/log/secure в узле Ansible Control на удаленные хосты в группе веб-серверов в место назначения /tmp.
Вы можете использовать модуль file для изменения прав доступа и владельца файла.
# ansible webservers -m file -a "dest=/tmp/secure mode=600"
# ansible webservers -m file -a "dest=/tmp/secure mode=600 owner=tecmint group=tecmint"
$ ansible webservers -m file -a "dest=/path/to/directory mode=755 owner=tecmint group=tecmint state=directory"
$ ansible webservers -m file -a "dest=/home/tecmint/data mode=755 owner=tecmint group=tecmint state=directory"
Заключение
В этой статье мы расскажем о том, как настроить управляемые узлы для запуска специальных команд Ansible для управления удаленными узлами.
Мы надеемся, что вы нашли эту статью полезной.
Оставайтесь с нами. Мы продолжим серию статей про Ansible!