URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 119859
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Генерация конфигурации клиента Open..."

Отправлено auto_tips , 24-Фев-20 14:24 
Часть на работе приходится разыскивать серверы, грепать из inventory.ini. Но почему бы Ansible не позаботится о нас. Настраиваем генерацию ~/.ssh/config из inventory.ini:

   cat ssh-config.yml:
   ---
   - name: Generate ssh client configuration from ansible inventory
     hosts: localhost
     connection: local
     gather_facts: no
     vars:
       title: "EasyConfig by Ansible"
       ssh_config_path: ssh_config.txt
     tasks:
       - name: ensure config for each host of inventory exist
         template: src="ssh_config.j2" dest="{{ ssh_config_path }}"
         when: ssh_config_path != ""


   cat ssh-config.j2 :
      #### {{ title }} Begin ####
  
   {% for host in groups.all | sort() | list %}
  
   {% if host != "localitem" and host != "127.0.0.1" and host != "localhost" %}
   Host {{hostvars[host].inventory_hostname}}
   {% if hostvars[host].ansible_host is defined and hostvars[host].ansible_host != "" %}  HostName {{hostvars[host].ansible_host}}
   {% else %}  HostName {{hostvars[host].inventory_hostname}}
   {% endif %}
   {% if hostvars[host].ansible_ssh_port is defined %}  Port {{hostvars[host].ansible_ssh_port}}
   {% endif %}
   {% endif %}
   {% endfor %}
  
   # Defaults
   Host *
       User root
       Port 22

  
   #### {{ title }} End ####


Получившийся ssh_config.txt - внимательно осматриваем и добавляем (или нет)  к своему ~/.ssh/config.

Как профит имеем автокомплит по серверам (можно добавить префикс), не тратим время на grep hostname Passwords_Hosts.txt можем прямо из Ansible управлять процессом.

URL:
Обсуждается: http://www.opennet.dev/tips/info/3130.shtml


Содержание

Сообщения в этом обсуждении
"еще немного автокомплита"
Отправлено Максим , 24-Фев-20 14:24 
обычно автокомплит еще хорошо работает из ~/.ssh/known_hosts, но для этого нужно отключить хеширование имен хостов в

~/.ssh/config

HashKnownHosts no

так же, на относительно свежей версии клиента можно попоросить задавать меньше вопросов:
StrictHostKeyChecking accept-new


"еще немного автокомплита"
Отправлено Аноним , 02-Мрт-20 18:21 
> StrictHostKeyChecking accept-new

Спасибо, добавил себе.


"Генерация конфигурации клиента OpenSSH из inventory.ini в Ansible"
Отправлено Аноним , 27-Фев-20 10:09 
что только люди не делают, только бы не генерить актокомплиты на лету. grepнуть  $ANSIBLE_HOME/hosts/* отформатировать и подгрузить в виде алиасов.
1 строка в .bashrc вместо всего текста выше.

Но нет, awk это слишком сложно.


"Генерация конфигурации клиента OpenSSH из inventory.ini в An..."
Отправлено Аноним , 02-Мрт-20 18:20 
Такое приемлемо только на SSD. Да и перемещение этого самого ansible_home всё сломает.

"Генерация конфигурации клиента OpenSSH из inventory.ini в An..."
Отправлено Ano , 11-Мрт-20 01:55 
Вы таки знаете, я и на awk такое делал, оно конечно все здорово, классно, но всякие сложные ситуации, типо:
" вот на эти хосты надо через два Jump хоста ", а вот тут надо юзера поправить, а вот тут...


Короч, когда в руках Ансибл, все кажется гвоздями да, по сути, так и есть

Раньше выходил из ситуации еще вот так

grep --color ${@} ${REPO_PATH}/00-hosts.ini | grep -vE '(^\[|^;)' | sed 's/ansible_host=//g'


Но это если у тебя 1 ансибл и 1 репа с хостами. просто поиска порой хватает ( когда хостов много, но еще не очень , <100 )

p.s. не очень представляю себе, как башом/awk парсить переменные хоста в ансибле (групповые и т д ) да и надо ли ?  - ансибл он ведь как раз сильвер-буллет, (ну или булщет, смотр какого вы года рождения)