alessio
alessio

Reputation: 31

how can I use ansible to push playbooks with SSH keys authentification

I am new to ansible and try to push playbooks to my nodes. I would like to push via ssh-keys. Here is my playbook:

- name: nginx install and start services
 hosts: <ip>
 vars:
   ansible_ssh_private_key_file: "/path/to/.ssh/id_ed25519"
 become: true

 tasks:
 - name: install nginx
   yum:
     name: nginx
     state: latest
 
 - name: start service nginx
   service:
     name: nginx
     state: started

Here is my inventory:

<ip> ansible_ssh_private_key_file=/path/to/.ssh/id_ed25519

before I push, I check if it works: ansible-playbook -i /home/myuser/.ansible/hosts nginx.yaml --check

it gives me: fatal: [ip]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: user@ip: Permission denied (publickey,password).", "unreachable": true}

On that server I don't have root privileges, I cant do sudo. That's why I use my own inventory in my home directory. To the target node where I want to push that nginx playbook, I can do a SSH connection and perform a login. The public key is on the remote server in /home/user/.ssh/id_ed25119.pub

What am i missing?

Upvotes: 0

Views: 2967

Answers (1)

Jack
Jack

Reputation: 6198

Copy /etc/ansible/ansible.cfg into the directory from which you are running the nginx.yaml playbook, or somewhere else per the documentation: https://docs.ansible.com/ansible/latest/reference_appendices/config.html#ansible-configuration-settings-locations

Then edit that file to change this line:

#private_key_file = /path/to/file

to read:

private_key_file = /path/to/.ssh/id_ed25519

Also check the remote user_user entry.

Upvotes: 0

Related Questions