Я тестирую обеспечение с помощью ansible локально, а с помощью vagrant я имитирую внешнюю машину. Как добавить свой ключ к бродяге и пользователю root в бродягу?
Добавление пользовательского ssh-ключа в vagrant
comment
Вы хотите получить свои ключи в свой ящик через ansible (например, DomaNitro, описанный ниже) или вы хотите получить эти ключи вручную или с помощью оболочки, чтобы вы могли протестировать свою настройку ansible?
- person Sgoettschkes   schedule 31.03.2014
Ответы (2)
В вашем бродячем файле вы можете использовать что-то вроде
## Ansible Provisioning
cfg.vm.provision :ansible do |ansible|
ansible.playbook = "vagrant-provision.yml"
## Debugging
ansible.verbose = true
ansible.verbose="vvvvv"
end
Создайте файл с именем vagrant-provision.yml в том же каталоге, что и ваш бродячий файл. Я предполагаю, что вы используете Ubuntu, вы можете изменить группы для других систем.
---
#
# This playbook deploys your keys to the vagrant
#
- name: Provision my keys
hosts: all
sudo: True
vars:
localuser: "{{ lookup('ENV','USER') }}"
tasks:
- name: Create your local user
user:
name="{{localuser}}"
home="/home/{{localuser}}"
shell="/bin/bash"
append="true"
group="admin"
comment="{{localuser}}"
- name: Putting you authorized_key
authorized_key:
key="{{lookup('file', '~/.ssh/id_rsa.pub')}}"
user="{{localuser}}"
manage_dir=yes
Итак, в этом случае, когда появится бродяга, он будет использовать приведенный выше код для развертывания ваших ключей.
person
DomaNitro
schedule
31.03.2014
Это можно сделать, смешав "file" и "shell", например:
$enable_root_passwordless_ssh_access = <<SCRIPT
#vagrant user has sudo passwordless access on precise32.box
[ -d /root ] || sudo mkdir /root
[ -d /root/.ssh ] || sudo mkdir /root/.ssh
[ -f /tmp/id_rsa.pub ] && sudo mv /tmp/id_rsa.pub /root/.ssh/authorized_keys
sudo chmod 0700 /root/.ssh
sudo chmod 0600 /root/.ssh/authorized_keys
sudo chown root:root /root/.ssh/authorized_keys
SCRIPT
machine.vm.provision "file", source: "~/.ssh/id_rsa.pub", destination: "/tmp/id_rsa.pub"
machine.vm.provision "shell", inline: $enable_root_passwordless_ssh_access
person
Javier López
schedule
16.06.2015
@JonathanLeaders В приведенном выше коде есть опечатка: скрипт проверяет
/root/.shh
вместо .ssh
. В любом случае, лучшей реализацией было бы использование mkdir -p /root/.ssh
- одна команда вместо четырех, см. man mkdir
для объяснения.
- person geekQ; 12.12.2017