我的 Ansible 腳本建立一台 AWS 計算機,然後嘗試連接到它。根據我建立的映像,SSH 登入的預設使用者名稱是「centos」或「ubuntu」等。
我的下面的腳本在 wait_for_connection 上失敗,並出現「權限被拒絕」錯誤。我認為這是因為 ssh 使用了錯誤的使用者名稱;控制節點以“userx”身份運行腳本。 (我確認我的公鑰位於遠端電腦上,並且我的匹配私鑰在控制節點上可用)。
如何調整我的腳本以使 ansible 使用正確的使用者名稱?我無法在清單中指定它,因為主機剛剛創建,並且用戶名取決於實例的類型。 wait_for_connection 沒有「使用者名稱」選項
我的腳本:
- name: Create one AWS machine
local_action:
module: ec2
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
key_name: "{{ key_name }}"
group_id: "{{ security_group_id }}"
instance_type: "{{ instance_type }}"
image: "{{ ami_id }}"
wait: true
region: "{{ aws_region }}"
zone: "{{ aws_zone}}"
vpc_subnet_id: "{{ aws_vpc_subnet }}"
assign_public_ip: yes
register: ec2
- name: Wait for SSH to come up
delegate_to: "{{ ec2.instances[0].public_dns_name }}"
wait_for_connection:
delay: 60
sleep: 15
timeout: 40
我嘗試在 wait_for_connection 之前設定使用者和金鑰文件,如下所示,但 ansible 仍然報告為以使用者 NONE 身份連接,並且金鑰檔案嘗試不列出我的金鑰檔案(/root/.ssh/mykey):
- name: Prepare to connect to new node
set_fact:
ansible_user: 'centos'
ansible_ssh_private_key_file: "{{ private_key_file }}"
以及 ansible 輸出的一部分:
<ec2-34-27-194-74.compute-1.amazonaws.com> ESTABLISH SSH CONNECTION FOR USER: None
debug1: identity file /root/.ssh/id_ecdsa type -1
答案1
您可以使用關鍵字在任何任務、區塊或遊戲上設定變數vars
。
- name: Wait for SSH to come up
delegate_to: "{{ ec2.instances[0].public_dns_name }}"
wait_for_connection:
delay: 60
sleep: 15
timeout: 40
vars:
ansible_user: centos