The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Генерация конфигурации клиента OpenSSH из inventory.ini в Ansible
Часто на работе приходится разыскивать серверы, грепать из 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 управлять процессом.
 
23.02.2020 , Автор: Ilya
Ключи: ssh, ansible, config / Лицензия: CC-BY
Раздел:    Корень / Безопасность / SSH

Обсуждение [ RSS ]
  • 1.1, Максим (??), 14:24, 24/02/2020 [ответить]  
  • +1 +/
    обычно автокомплит еще хорошо работает из ~/.ssh/known_hosts, но для этого нужно отключить хеширование имен хостов в

    ~/.ssh/config

    HashKnownHosts no

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

     
     
  • 2.5, Аноним (5), 18:21, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > StrictHostKeyChecking accept-new

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

     

  • 1.3, Аноним (3), 10:09, 27/02/2020 [ответить]  
  • +/
    что только люди не делают, только бы не генерить актокомплиты на лету. grepнуть  $ANSIBLE_HOME/hosts/* отформатировать и подгрузить в виде алиасов.
    1 строка в .bashrc вместо всего текста выше.

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

     
     
  • 2.4, Аноним (5), 18:20, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Такое приемлемо только на SSD. Да и перемещение этого самого ansible_home всё сломает.
     
  • 2.6, Ano (?), 01:55, 11/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вы таки знаете, я и на awk такое делал, оно конечно все здорово, классно, но всякие сложные ситуации, типо:
    " вот на эти хосты надо через два Jump хоста ", а вот тут надо юзера поправить, а вот тут...


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

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

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


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

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

     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру