ansible 플레이 북 파일에 ssh 키 지정
Ansible 플레이 북은 --key-file
명령 줄에서 ssh 연결에 사용되는 키를 수 있습니다 .
ansible-playbook -i hosts playbook.yml --key-file "~/.ssh/mykey.pem"
--key-file
명령 줄 에서 사용 하는 대신 플레이 북 파일 에서이 키의 위치를 지정할 수 있습니까?
이 키의 위치를 var.yaml
파일 에 쓰고 싶기 때문에 vars_files:
.
다음은 내 구성의 일부입니다.
vars.yml 파일
key1: ~/.ssh/mykey1.pem
key2: ~/.ssh/mykey2.pem
playbook.yml 파일
---
- hosts: myHost
remote_user: ubuntu
key_file: {{ key1 }} # This is not a valid syntax in ansible. Does there exist this kind of directive which allows me to specify the ssh key used for this connection?
vars_files:
- vars.yml
tasks:
- name: Echo a hello message
command: echo hello
ansible_ssh_private_key_file
아래에 추가해 보았습니다 vars
. 하지만 내 컴퓨터에서는 작동하지 않습니다.
vars_files:
- vars.yml
vars:
ansible_ssh_private_key_file: "{{ key1 }}"
tasks:
- name: Echo a hello message
command: echo hello
나는 실행하는 경우 ansible-playbook
와 playbook.yml
위. 다음과 같은 오류가 발생했습니다.
TASK [Gathering Facts] ******************************************************************************************************************************
Using module file /usr/local/lib/python2.7/site-packages/ansible/modules/system/setup.py
<192.168.5.100> ESTABLISH SSH CONNECTION FOR USER: ubuntu
<192.168.5.100> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o ControlPath=/Users/myName/.ansible/cp/2d18691789 192.168.5.100 '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
<192.168.5.100> (255, '', 'Permission denied (publickey).\r\n')
fatal: [192.168.5.100]: UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey).\r\n",
"unreachable": true
}
to retry, use: --limit @/Users/myName/playbook.retry
ssh 명령에서 내 키 파일의 이름을 수 없습니다. 이상 해요.
찾고있는 변수 이름은 ansible_ssh_private_key_file
입니다.
'vars'수준에서 설정해야합니다.
인벤토리 파일에서 :
myHost ansible_ssh_private_key_file=~/.ssh/mykey1.pem myOtherHost ansible_ssh_private_key_file=~/.ssh/mykey2.pem
에서
host_vars
:# hosts_vars/myHost.yml ansible_ssh_private_key_file: ~/.ssh/mykey1.pem # hosts_vars/myOtherHost.yml ansible_ssh_private_key_file: ~/.ssh/mykey2.pem
group_vars
호스트 그룹에 동일한 키를 사용하는 경우 파일 에서에서vars
당신의 플레이의 섹션
편집 :이 변수를 정의하기 위해 너무 늦기 으로이 솔루션은 작동하지 않을 수 있습니다.- hosts: myHost remote_user: ubuntu vars_files: - vars.yml vars: ansible_ssh_private_key_file: "{{ key1 }}" tasks: - name: Echo a hello message command: echo hello
ansible.cfg 파일을 사용할 수있는 다음과 같이 표시되어야합니다 (포함 할 수있는 다른 매개 변수가 있습니다).
[defaults]
inventory = <PATH TO INVENTORY FILE>
remote_user = <YOUR USER>
private_key_file = <PATH TO KEY_FILE>
이것이 타이핑을 절약하기를 바랍니다
플레이 북을 실행 ansible-playbook -vvv
하면 실제 명령이 실행되는 것을 볼 수 있으므로 키가 실제로 ssh 명령에 포함되어 있는지 확인할 수 있습니다 (문제가 누락 된 키가 아니라 잘못된 사용자 이름이라는 것을 발견 할 수 있음).
vars 섹션이 너무 늦었다는 위의 Brian의 의견 (및 zigam의 편집)에 동의합니다. 나는 또한 이와 같이 호스트의 즉석 정의에 키를 포함하여 테스트했습니다.
# fails
- name: Add all instance public IPs to host group
add_host: hostname={{ item.public_ip }} groups=ec2hosts ansible_ssh_private_key_file=~/.aws/dev_staging.pem
loop: "{{ ec2.instances }}"
하지만 그것도 실패합니다.
그래서 이것은 답이 아닙니다. 디버깅 도움말과 시도하지 말아야 할 것들.
참조 URL : https://stackoverflow.com/questions/44734179/specifying-ssh-key-in-ansible-playbook-file
'ProgramingTip' 카테고리의 다른 글
Docker 컨테이너의 호스트에서 쉘 펼쳐지는 실행 방법은 무엇입니까? (0) | 2020.12.30 |
---|---|
하나 워커 : 누락 된 dll (0) | 2020.12.30 |
'None is None is None'이 True를 반환하는 이유는 무엇입니까? (0) | 2020.12.30 |
cmd.exe를 사용할 때 따옴표를 어떻게 처리합니까? (0) | 2020.12.30 |
UI의 무단 작업을 숨기거나 수행해야합니까? 아니면 오류가 발생합니까? (0) | 2020.12.30 |