Ssh
Ansible 無法通過 ssh 連接到動態創建的 EC2 主機
我的 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
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