инструменты автоматизации ansible и terraform

Ответить
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

инструменты автоматизации ansible и terraform

Сообщение ya »

инструменты автоматизации ansible и terraform

Ansible
https://www.youtube.com/watch?v=3eRQDA7Y-lA&list=PLg5SS_4L6LYufspdPupdynbMQTBnZd31N&index=1

Права доступа:

Код: Выделить всё

usermod -a -G sudo gt
Список доступных модулей
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/index.html#description
Например модуль ping
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/ping_module.html#ansible-collections-ansible-builtin-ping-module
sudo apt install ansible sshpass python3-apt-dbg
Псевдо-графическое представление всех групп-хостов

Код: Выделить всё

ansible-inventory all --graph
Список доступных хостов

Код: Выделить всё

ansible all --list-hosts -v
Пинг всех серверов

Код: Выделить всё

ansible all -m ping -v

при использовании параметра -vv выдаст больше инфы, например конфиг:
/home/gt/ans/ansible.cfg

Скопирует файл vpnbook.pass из текущего каталога на все компы в директорию /home/gt с правами 644

Код: Выделить всё

ansible all -m copy -a "src=vpnbook.pass dest=/home/gt mode=644"
Если нужно выполнить как sudo (с правами root), в конце указать -b

Код: Выделить всё

ansible all -m copy -a "src=vpnbook.pass dest=/home/gt mode=644" -b
Стереть файл vpnbook.pass со всех хостов

Код: Выделить всё

ansible all -m file -a "patch=/home/gt/vpnbook.pass state=absent"
Скачать на все сервера

Код: Выделить всё

-m get_url -a "url=https://адрес dest=/home/gt/Downloads"
Выполнить команду на всех серверах

Код: Выделить всё

-m shell -a "df -Th"
Проверит, сможет ли хост подконнэктиться к сайту

Код: Выделить всё

-m uri -a "url=https://https://www.vpnbook.com/freevpn"
Вернуть контент с сайта

Код: Выделить всё

-m uri -a "url=https://https://www.vpnbook.com/freevpn return_content=yes"
установка пакетов deb

Код: Выделить всё

-m deb -a "name=имя_пакета state=install" -b
Запуск демона и установка этого демона в автозагрузку

Код: Выделить всё

-m service -a "name=демон state=started enabled=yes" -b
Деинсталировать установленный пакет на всех серверах из списка

Код: Выделить всё

-m service -a "name=пакет state=removed" -b
Подключение от имени другого пользователя

Код: Выделить всё

ansible all -m ping -u 8host
Последний раз редактировалось ya 02 апр 2024, 19:57, всего редактировалось 11 раз.
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Список хостов для ansible

Сообщение ya »

Список хостов для ansible

mcedit /home/gt/ans/hosts.txt

Код: Выделить всё


[e7_e12]
#e7 ansible_host=e7.gt
e8 ansible_host=e8.gt
#e9 ansible_host=e9.gt
#e10 ansible_host=e10.gt
e11 ansible_host=e11.gt
e12 ansible_host=e12.gt


[e18_e25]
e18 ansible_host=e18.gt
e19 ansible_host=e19.gt
e21 ansible_host=e21.gt
e22 ansible_host=e22.gt
e23 ansible_host=e23.gt
e24 ansible_host=e24.gt
e25 ansible_host=e25.gt

[e7_e12:vars]
nsible_ssh_user=gt
ansible_ssh_pass=1

[e18_e25:vars]
#ansible_user=gt
nsible_ssh_user=gt
ansible_ssh_pass=1
#ansible_ssh_private_key_file=~/.ssh/id_rsa.pub





Запуск пинга на все группы
ansible -i hosts.txt all -m ping

Запуск пинга конкретных хостов
ansible e8,e11 -m ping
Последний раз редактировалось ya 20 мар 2024, 13:42, всего редактировалось 6 раз.
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Все имеющиеся модули в ansible

Сообщение ya »

Все имеющиеся модули в ansible
ansible-doc -l

Все модули для win
ansible-doc -l | grep win_
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Конфиг для ansible

Сообщение ya »

Чтобы выполнить ансибл, нужно перейти в каталог с его конфигом
cd $HOME/.ansible
ansible --version

mkdir $HOME/ans
mcedit $HOME/ans/ansible.cfg
или
$HOME/.ansible/ansible.cfg

Код: Выделить всё

[defaults]
host_key_checking = false
inventory         = ./hosts.txt
interpreter_python = /usr/bin/python3
library = /path/to/deb/module/directory

Переменные для всех хостов:

Код: Выделить всё

[all:vars]
ansible_python_interpreter=/usr/bin/python3
Проверка на пинг:
cd $HOME/.ansible
ansible all -m ping

Пути к модулям

Код: Выделить всё

ansible-config dump |grep DEFAULT_MODULE_PATH
Список хостов описанных в конфиге хостов

Код: Выделить всё

ansible-inventory --list -y
Последний раз редактировалось ya 31 мар 2024, 14:06, всего редактировалось 5 раз.
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Создание публичного ключа для ansible

Сообщение ya »

Для создания публичного ключа для использования с Ansible, вы можете выполнить следующие шаги:

Запустите команду ssh-keygen на своем локальном компьютере.
Вам будет предложено выбрать расположение для сохранения ключа. По умолчанию ключ будет сохранен в вашей домашней директории в папке .ssh/.
При создании ключа вам будет предложено установить пароль для защиты ключа. Это необязательно, но может улучшить безопасность вашего ключа.
После завершения процесса создания ключа вы получите два файла: приватный ключ (обычно с расширением .rsa или .pem) и публичный ключ (обычно с расширением .pub).
Содержимое публичного ключа можно скопировать и использовать для добавления в файл authorized_keys на сервере, к которому вы хотите подключиться с помощью Ansible.
Чтобы использовать тип соединения 'ssh' с паролями, необходимо установить программу sshpass
cat hosts.txt

Код: Выделить всё

[e]
linuxE ansible_host=e18.gt

[e:vars]
#ansible_user=gt
nsible_ssh_user=gt
ansible_ssh_pass=1
#ansible_ssh_private_key_file=~/.ssh/id_rsa.pub
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

пароли для ansible

Сообщение ya »

FAILED | rc=-1 >> Missing sudo password


sudo apt install sshpass

or long --ask-become-pass –

У меня есть инвентарь, который объединяет аутентификацию с помощью ssh_private_key и аутентификацию с помощью пароля. Я получаю этот вывод, и мне просто нужно нажать клавишу ввода BECOME password[по умолчанию пароль SSH]: -.

Это, по мнению IMO, лучший ответ. Отсутствие необходимости возиться с файлом sudoers - это большой плюс. -

Если ключ ssh скопирован на удаленную машину, --ask-pass не нужен, так как мы подключаемся к удаленной машине методом обмена ключами. Используйте только --ask-become-pass для ввода пароля удаленной машины. -

Код: Выделить всё

ansible-playbook playbook.yml -i inventory.ini --extra-vars "ansible_sudo_pass=yourPassword"

Код: Выделить всё

ansible e8,e11 -m shell -a "sudo apt-get install python3.5" --ask-become-pass

Код: Выделить всё

ansible e8,e11 -m shell -a "sudo skdump /dev/sda" 
--become-user указывается пользователь, права которого требуется получить через sudo

Код: Выделить всё

 --become-user "root"
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Права root для ansible

Сообщение ya »

[WARNING]: Consider using 'become', 'become_method', and 'become_user' rather than running sudo
Рассмотрите возможность использования 'become', 'become_method' и 'become_user' вместо выполнения sudo

Код: Выделить всё

ansible e8,e11 -m shell -a "sudo hdparm -i /dev/sda | grep 'Model'"
Вместо команды 'chmod' используйте файловый модуль с режимом. Если вам нужно использовать команду, потому что файл недостаточен
вы можете добавить 'warn: false' к этой задаче команды или установить 'command_warnings=False' в ansible.cfg, чтобы избавиться от этого сообщения.
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: инструменты автоматизации ansible и terraform

Сообщение ya »

Запуск ansible

Код: Выделить всё


# ping
ansible all -m ping
# Свободное место
ansible gr2 -m shell -a "df -Th | grep '/home'"
ansible ya,gr2 -m shell -a "df -Th | grep /home"
ansible gr3 -m command -a "df -Th | grep /home"
ansible vm35 -m command -a "df -Th | grep '/' " -v -k

# Список активных vpn
ansible all -m shell -a "ip -br a | grep 'tun'"

# Скопировать все файлы
ansible e18 -m copy -a "src=~/vpnbook.pass dest=/home/gt mode=644"
ansible all -m copy -a "src=./cpu.sh dest=/home/gt mode=755" -v -k

# Нагрузка на процессор при тесте в 1 секунду
ansible gt2 -m shell -a "mpstat 1 1 | grep -A 5 \"%idle\" | tail -n 1 | awk -F \" \" '{print 100 -  $ 12\"%\"}'a"
#ansible gr3 -m command -a "mpstat 1 1 | grep -A 5 \"%idle\" | tail -n 1 | awk -F \" \" '{print 100 -  $ 12\"%\"}'a" -v -k
ansible gr3 -m command -a "/bin/bash /home/gt/cpu.sh" -v -k
ansible ya,gr2 -m shell -a "/bin/bash /home/gt/cpu.sh" -v -k

# Удаление пакетов
ansible ya,gr2 -m apt -a "name=имя_пакета state=absent" -v -k -b -K


# Покажет, установлен ли пакет
ansible ya -m apt -a "name=libreoffice* state=present" -v -k

# Автоудаление автоматически установленных пакетов
ansible e23 -m apt -a "autoremove=yes" -v -k -b -K


Установить пакеты на другие хосты:

Код: Выделить всё

apt-get install --no-install-recommends python3-apt -y -q

cat cpu.gr2.sh

Код: Выделить всё

#!/bin/bash

uname -a
ip -br a | grep "tun"
df -h | grep "/dev/[s,v]da[1,8]"

free -g

echo " "

mpstat 1 1 | grep -A 5 "%idle" | tail -n 1 | awk -F " " '{print 100 - $12"%"}'a

echo " "
echo " "

ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: инструменты автоматизации ansible и terraform

Сообщение ya »

Код: Выделить всё

#Псевдо-графическое представление всех групп-хостов
ansible-inventory all --graph

ansible-inventory --list -y
# ping
ansible all -m ping
# Свободное место
ansible gr2 -m shell -a "df -Th | grep '/home'"
ansible ya,gr2 -m shell -a "df -Th | grep /home"
ansible gr3 -m command -a "df -Th | grep /home"
ansible vm35 -m command -a "df -Th | grep '/' " -v -k

# Список активных vpn
ansible all -m shell -a "ip -br a | grep 'tun'"

# Скопировать все файлы
ansible e18 -m copy -a "src=~/vpnbook.pass dest=/home/gt mode=644"
ansible all -m copy -a "src=./cpu.sh dest=/home/gt mode=755" -v -k

# Нагрузка на процессор при тесте в 1 секунду
ansible gr3 -m command -a "/bin/bash /home/gt/cpu.sh" -v -k
ansible ya,gr2 -m shell -a "/bin/bash /home/gt/cpu.sh" -v -k

# Удаление пакетов
ansible ya,gr2 -m apt -a "name=имя_пакета state=absent" -v -k -b -K

# Покажет, установлен ли пакет
ansible ya -m apt -a "name=libreoffice* state=present" -v -k
ansible vm35 -m apk -a "name=apache2 state=present" -v -k

# Автоудаление автоматически установленных пакетов
ansible e23 -m apt -a "autoremove=yes" -v -k -b -K

#Поднятие ovpn
ansible gr2 -m shell -a "/bin/bash /home/gt/ovpn.sh" -v -k
ansible gr3 -m command -a "rc-service local restart" -v -k -b -K
#Состояние ovpn
ansible ya,gr2,gr1 -m shell -a "ip -br a | grep tun" -v -k
ansible gr3 -m shell -a "ip -br a | grep tun" -v -k
ansible all -m shell -a "ip -br a | grep tun" -v -k

Последний раз редактировалось ya 02 апр 2024, 20:05, всего редактировалось 1 раз.
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: инструменты автоматизации ansible и terraform

Сообщение ya »

Использование командной строки для изменения пароля пользователя с помощью Ansible
https://www.howtouselinux.com/post/change-user-password-with-ansible

Код: Выделить всё

ansible -i inventory all -m user -a "name=admin update_password=always password={{ newpassword|password_hash('sha512') }}" -b --extra-vars "newpassword=Nihao"
через playbook

Код: Выделить всё

vars:
myusers:
  - { name: 'user1', update_pass: 'passwd' }
  - { name: 'user2', update_pass: 'passwd' }
  - { name: 'user3', update_pass: 'passwd' } 

# Contents of passwd will be stored in ansible_facts.getent_passwd as a dict
- name: Determine local user accounts
  getent:
    database: passwd

# Update password if user account is found in /etc/passwd
- name: change passwd
  user: name={{ item.name }} password={{ item.update_pass  }} update_password=always
  with_items: myusers
  when: item in ansible_facts.getent_passwd
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: инструменты автоматизации ansible и terraform

Сообщение ya »

Подключение ansible к серверам win

Установить пакет python3-winrm

Код: Выделить всё

apt install python3-winrm
В файл hosts.txt добавить

Код: Выделить всё

[win_serv]
win1 ansible_host=172.31.4.99
win2 ansible_host=172.31.13.170

[win_serv:vars]
ansible_user=пользователь
ansible_password=пароль
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

Скачать и запустить на всех win-серверах скрипт
Инструкция
https://docs.ansible.com/ansible/latest/os_guide/windows_winrm.html
https://runebook.dev/ru/docs/ansible/user_guide/windows_setup
Скрипт
https://github.com/AlbanAndrieu/ansible-windows/blob/master/files/ConfigureRemotingForAnsible.ps1
https://github.com/jborean93/ansible-windows/blob/master/scripts/Upgrade-PowerShell.ps1
Запустить от администратора в PowerShell на win-серверах

Код: Выделить всё

.\ConfigureRemotingForAnsible.ps1
Скрипт работает только в PowerShell 3.0, если установлена версия 2.0., то устанавливаем обновление Windows6.1-KB2506143-x64.msu
https://www.microsoft.com/en-us/download/details.aspx?id=34595
https://winitpro.ru/index.php/2020/05/14/obnovlenie-powershell-v-windows/

Если запуск скрипта не удался, смотрим политики запуска скриптов и устанавливаем политику: выполнять локальные скрипты
https://winitpro.ru/index.php/2020/06/03/powershell-execution-policy-zapusk-scriptov/

Код: Выделить всё

Get-ExecutionPolicy
Set-ExecutionPolicy RemoteSigned
Область применения политики можно указать с помощью параметр Scope командлета Set-ExecutionPolicy. Например:

Код: Выделить всё

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass –Force
Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted -Force
Проверим текущие настройки ExecutionPolicy для всех областей:

Код: Выделить всё

Get-ExecutionPolicy -List
Если домен-контроллер и тысяча пользователей, тогда просто добавить в групп-полиси, который будет эплайт на группу компьютеров

Установить open-ssh
https://github.com/PowerShell/Win32-OpenSSH/releases/tag/v9.5.0.0p1-Beta

После этого пробуем сконнэктиться

Код: Выделить всё

ansible win_serv -m win_ping
Все модули в ansible для win начинаются с win
Вложения
ConfigureRemotingForAnsible.zip
(5.02 КБ) 2114 скачиваний
ConfigureRemotingForAnsible.zip
(5.02 КБ) 2114 скачиваний
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: инструменты автоматизации ansible и terraform

Сообщение ya »

https://github.com/PowerShell/Win32-OpenSSH/releases/download/v9.5.0.0p1-Beta/OpenSSH-Win64-v9.5.0.0.msi

Покажет состояние жёстких дисков
/bin/bash

Код: Выделить всё

ansible grwin -m win_shell -a "wmic diskdrive get status" -v
hosts.txt

Код: Выделить всё

[grwin]
win1 ansible_host=e2.gt
#win2 ansible_host=172.31.13.170

[grwin:vars]
ansible_user=p5k
#ansible_password=пароль
#ansible_port=5986
#ansible_connection=winrm
ansible_connection=ssh
ansible_shell_type=cmd
ansible_winrm_server_cert_validation=ignore


ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: инструменты автоматизации ansible и terraform

Сообщение ya »

The solution was to reinstall ansible and adjust the inventory:

From :
[win] 173.25.1.146 ansible_connection=winrm ansible_winrm_transport=basic ansible_port=5986 ansible_winrm_server_cert_validation=ignore ansible_python_interpreter=C:\Users\jballesterosc\AppData\Local\Programs\Python\Python37-32
To:
[win] ansible_ssh_host=173.25.1.146 [win:vars] ansible_user=XXXXXX ansible_password=XXX ansible_connection=winrm ansible_winrm_transport=ntlm ansible_port=5986 ansible_winrm_server_cert_validation=ignore ansible_python_interpreter=C:\Python27
Ответить