Страница 1 из 1
инструменты автоматизации ansible и terraform
Добавлено: 23 дек 2023, 10:49
ya
инструменты автоматизации ansible и terraform
Ansible
https://www.youtube.com/watch?v=3eRQDA7Y-lA&list=PLg5SS_4L6LYufspdPupdynbMQTBnZd31N&index=1
Права доступа:
Список доступных модулей
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
Псевдо-графическое представление всех групп-хостов
Список доступных хостов
Пинг всех серверов
при использовании параметра -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 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
Добавлено: 20 мар 2024, 11:07
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
Все имеющиеся модули в ansible
Добавлено: 20 мар 2024, 11:18
ya
Все имеющиеся модули в ansible
ansible-doc -l
Все модули для win
ansible-doc -l | grep win_
Конфиг для ansible
Добавлено: 20 мар 2024, 11:40
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
Добавлено: 20 мар 2024, 12:21
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
пароли для ansible
Добавлено: 20 мар 2024, 13:22
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
Права root для ansible
Добавлено: 20 мар 2024, 14:22
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, чтобы избавиться от этого сообщения.
Re: инструменты автоматизации ansible и terraform
Добавлено: 31 мар 2024, 14:26
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 " "
Re: инструменты автоматизации ansible и terraform
Добавлено: 02 апр 2024, 19:37
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
Re: инструменты автоматизации ansible и terraform
Добавлено: 02 апр 2024, 19:51
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
Re: инструменты автоматизации ansible и terraform
Добавлено: 12 апр 2024, 11:44
ya
Подключение ansible к серверам win
Установить пакет 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-серверах
Скрипт работает только в 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 для всех областей:
Если домен-контроллер и тысяча пользователей, тогда просто добавить в групп-полиси, который будет эплайт на группу компьютеров
Установить open-ssh
https://github.com/PowerShell/Win32-OpenSSH/releases/tag/v9.5.0.0p1-Beta
После этого пробуем сконнэктиться
Все модули в ansible для win начинаются с win
Re: инструменты автоматизации ansible и terraform
Добавлено: 12 апр 2024, 21:02
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
Re: инструменты автоматизации ansible и terraform
Добавлено: 21 май 2024, 17:02
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