Как предоставить пароль sudo для разных хостов при запуске загружаемой книги с несколькими хостами [duplicate]

Неприятный обход, но, безусловно, возможно использовать вложенный запрос. Создайте временную таблицу MYVALUES со столбцом в ней. Вставьте свой список значений в таблицу MYVALUES. Затем выполните

select my_column from my_table where search_column in ( SELECT value FROM MYVALUES )

Ужасно, но жизнеспособной альтернативой, если ваш список значений очень велик.

Этот метод имеет дополнительное преимущество потенциально лучших планов запросов от оптимизатора (проверьте страница для нескольких значений, таблицы могут быть только один раз вместо одного значения и т. д.) могут сэкономить накладные расходы, если ваша база данных не кэширует подготовленные операторы. Ваши «INSERTS» должны выполняться в пакетном режиме, и таблица MYVALUES может потребоваться изменить, чтобы иметь минимальную блокировку или другие высоконадежные защиты.

8
задан risa_risa 18 October 2015 в 03:21
поделиться

3 ответа

Прежде всего, это не проблема. Вам нужно получить доступ к ключу для подключения к нескольким хостам.

Вы можете создать ssh-ключ на пульте и сохранить локальные все открытые ключи.

Добавьте их permenantly ssh config;

vim ~ / .ssh / config

IdentitiyFile ~/.ssh/pub.key

Если вам нужно больше узнать об этом , вы можете проверить здесь

Теперь вы можете получить доступ ко всем ключам без ключа. ENJOY>!

7
ответ дан Community 17 August 2018 в 09:59
поделиться
  • 1
    Хорошо, поэтому, если я правильно понимаю вас (и переменные-переменные), в test/group_vars/new/some_file_with_a_passwd.yml, я бы добавил следующее: ansible_sudo_pass=whateverThePasswordis и все? (опять же, безопасность в стороне.) – risa_risa 15 October 2015 в 20:09
  • 2
    Если вы используете какой-либо источник управления или совместно используете код с кем-либо, зашифруйте эти учетные данные с помощью Ansible Vault. – nikobelia 16 October 2015 в 21:01
  • 3
    Это правда, что вам не нужен Ansible для решения этой проблемы, но решение этой проблемы в вашей собственной конфигурации SSH делает ваш код Ansible не переносимым. Плохо для любого кода, поддерживаемого группой, и плохого, если вы когда-либо захотите запустить эту игру с другого сервера. – nikobelia 16 October 2015 в 21:12
  • 4
    Привет @nikobelia, ваш ответ был неправильным, когда я написал это. ?! Почему ты украл мой ответ? его неэтика. – pmoksuz 17 October 2015 в 06:19
  • 5
    Кстати, в вашем случае вам нужны ключи от pem, все ваши локальные severs ничего не меняют. Я думаю, что мы можем написать задачу для изменения локальной конфигурации ssh на один раз .. Это зависит от ваших потребностей. – pmoksuz 17 October 2015 в 06:36
  • 6
    Нет, чувак, посмотри на отметки времени - ты ответил это передо мной. Я видел ваш ответ о доступе к SSH и понял, что OP тоже просил эту информацию, поэтому я редактировал сообщение, чтобы поговорить об Ansible способе управления ключами SSH. – nikobelia 17 October 2015 в 18:18
7
ответ дан Community 6 September 2018 в 07:34
поделиться

Хорошо, у вас есть два вопроса:

Как подключиться к разным хостам с разными SSH-ключами?

Создайте другой файл group_vars для каждого набора хостов и установите там учетные данные.

# group_vars/legacy
---
ansible_ssh_user: myuser
ansible_ssh_key: ~/.ssh/legacy_key.pem

Затем Ansible применит другой ключ, основанный на том, в какой группе находится каждый хост, просто так.

Как использовать разные учетные данные для каждого узла для повышения эскалации привилегий?

Еще раз поместите их в разные файлы group_vars для каждого набора хостов:

# group_vars/legacy
---
ansible_become_user: root
ansible_become_pass: "{{ vaulted_legacy_password }}"

Затем вы можете использовать ключевое слово become: yes для эскалации привилегий, а Ansible будет применять правильные учетные данные для каждой группы. Если вы уже являетесь пользователем root, ключевое слово become просто не будет иметь никакого эффекта.

А потом ... видите ли там {{ vaulted_legacy_password }} переменную?

Лучшая практика, и только разумная вещь, чтобы сделать , если вы когда-либо делитесь этим кодом, заключается в создании файла Ansible Vault и сохранении ваших паролей там. Пароль Ansible Vault защищает ваши чувствительные переменные и позволяет расшифровать их во время работы.

Вы можете либо сделать весь ваш group_vars/legacy файл сводчатым (если учетные данные являются единственной информацией в нем), либо создать папку group_vars / legacy с одним файлом открытого текста и одним зашифрованным файлом. Все файлы в подкаталоге group_vars будут получены и применены к группе с именем папки.

5
ответ дан nikobelia 17 August 2018 в 09:59
поделиться
  • 1
    Правильно, я собираюсь использовать Сейф, независимо. На данный момент у меня есть .gitignore на любой group_vars, пока я тестирую вещи. Однако, когда я прямо вставляю ansible_become_user: deploy и ansible_become_pass: passw0rd1 в свой group_vars и запускаю свою игру, это не работает. Вместо этого я получаю либо эту ошибку: msg: Failed to lock apt for exclusive operation, либо это: failed: [testserv1] => {"failed": true, "parsed": false} BECOME-SUCCESS-zddkeemojwrlxnblahblahhalbikigqgpwd – risa_risa 18 October 2015 в 03:17
  • 2
    Из сообщения BECOME-SUCCESS на вашем выходе, похоже, что команда становится командой (ей удается переключить выполняемые пользователем задачи с той, что вы ssh'd, как на пользователя deploy), но все еще не имеет прав для выполнения этой задачи. Если вы входите в систему как deploy и пытаетесь использовать apt вручную, это работает? – nikobelia 18 October 2015 в 10:39
  • 3
    Да. Развертываются ansible_ssh_user и ansible_become_user. Deploy имеет доступ к sudo, и да, он работает вручную. – risa_risa 18 October 2015 в 20:29
Другие вопросы по тегам:

Похожие вопросы: