2016-09-26 4 views
3

Я пытаюсь настроить упаковщик и удаленный-удаленный, чтобы создать AMI на основе моих ранее существовавших скриптов. Я столкнулся с одним из двух вопросов.Packer and Ansible SSH/Sudo

Сначала у меня возникла проблема с SSH, где я получил SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh. Я добавил connection: local в мою конфигурацию ansible и, похоже, решил это.

Теперь я столкнулся с проблемой sudo: a password is required от Ansible. Непонятно, почему, поскольку пользователь, которого я указываю, имеет доступ к sudo с помощью NOPASSWD, и я проверил это, подключившись с помощью установки temp-ключа пакером. Я получаю следующую ошибку и пробовал пропустить в ansible_become_user и ansible_become_pass как vars через упаковщика без везения. Похоже, что, возможно, сейчас он пытается подключиться к моему локальному соединению, но ему нужен пароль? Любые идеи, как правильно настроить это.

Packer:

{ 
    "variables": { 
    "aws_access_key": "", 
    "aws_secret_key": "" 
    }, 
    "builders": [{ 
    "type": "amazon-ebs", 
    "access_key": "{{user `aws_access_key`}}", 
    "secret_key": "{{user `aws_secret_key`}}", 
    "region": "us-east-1", 
    "subnet_id": "subnet-56343453", 
    "source_ami": "ami-61bbf104", 
    "instance_type": "t2.micro", 
    "ssh_username": "centos", 
    "ssh_pty" : true, 
    "ami_name": "packer-example {{timestamp}}" 
    }], 
    "provisioners": [ 
    { 
     "type": "shell", 
     "inline": ["sudo sed -i 's/requiretty/!requiretty/' /etc/sudoers"] 
    }, 
    { 
     "type": "ansible", 
     "playbook_file": "../config/site/packer.yml", 
     "user": "centos", 
     "ansible_env_vars": [ "ansible_become_user=centos", "ansible_become_pass=packer", "ANSIBLE_HOST_KEY_CHECKING=False", "ANSIBLE_SSH_ARGS='-o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s'" ] 
    } 
    ] 
} 

анзибль:

--- 
    - name: run base centos playbooks 
    hosts: all 
    connection: local 
    become: true 
    roles: 
    - base_centos7 
+0

Может быть неправильными, но это выглядит как 'связи: local' будет работать пьесы локально, где' packer' был запущен, а не на Предоставлен инстанции , –

+0

Эй, как вы это исправили? Теперь я столкнулся с той же ошибкой на этапе сбора фактов. Данные не могут быть отправлены на удаленный хост 127.0.0.1. Я пробовал подключение: локально, как говорит MattW, и он прав. Но без этого не работает – straykiwi

ответ

-1

Я не думаю, что вам нужно CentOS пользователей там, так как вы уже подключены, как пользователь CentOS.

Альваро

1
SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh 

Эта ошибка фиксируется с помощью ansible_python_interpreter =/USR/бен/python3

Поскольку упаковщик генерирует файл инвентаризации, лучший способ заключается в создании [ubuntu16] анзибль группу и в group_vars установить ansible_python_interpreter в/usr/bin/python3

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

0

Проблема с паролем sudo будет полностью зависеть от вашего исходного AMI («source_ami»: «ami-61bbf104»).

Если AMI управляется самостоятельно, вам необходимо убедиться, что пользователь, которому вы пользуетесь «centos», имеет возможность sudo и предоставить вам другую безопасность на месте (ключи ssh), вы можете удалить пароль. В качестве альтернативы вы можете использовать флаг «-ask-get-pass» при работе с ним, я не уверен, насколько это хорошо работает с Packer.

Если AMI является управляемым изображением AWS, я бы предложил использовать «ec2-user» с Packer, который затем настроил бы пользователей на изображении с общей ролью и применил бы настройки с соответствующими пользователями с помощью «стать_зальзователем».

полезных ссылок: