You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/user/tasks/ssh_keygen.yml

101 lines
2.6 KiB
YAML

- name: user generating ssh keys tests
become: true
vars:
home: "{{ (ansible_facts['os_family'] == 'Darwin')|ternary('/Users/ansibulluser/', '/home/ansibulluser/')}}"
ssh_key_file: .ssh/ansible_test_rsa
pub_file: '{{ssh_key_file}}.pub'
key_files:
- '{{ssh_key_file}}'
- '{{pub_file}}'
block:
- name: Ensure clean/non existsing ansibulluser
user: name=ansibulluser state=absent
- name: Test creating ssh key creation
block:
- name: Create user with ssh key
user:
name: ansibulluser
state: present
generate_ssh_key: yes
ssh_key_file: '{{ ssh_key_file}}'
- name: check files exist
stat:
path: '{{home ~ item}}'
register: stat_keys
loop: '{{ key_files }}'
- name: ensure they exist
assert:
that:
- stat_keys.results[item].stat.exists
loop: [0, 1]
always:
- name: Clean ssh keys
file: path={{ home ~ item }} state=absent
loop: '{{ key_files }}'
- name: Ensure clean/non existsing ansibulluser
user: name=ansibulluser state=absent
- name: Ensure we don't break on conflicts
block:
- name: flag file for test
tempfile:
register: flagfile
- name: precreate public .ssh
file: path={{home ~ '.ssh'}} state=directory
- name: setup public key linked to flag file
file: path={{home ~ pub_file}} src={{flagfile.path}} state=link
- name: Create user with ssh key
user:
name: ansibulluser
state: present
generate_ssh_key: yes
ssh_key_file: '{{ ssh_key_file }}'
ignore_errors: true
register: user_no_force
- stat: path={{home ~ pub_file}}
register: check_pub
- name: ensure we didn't overwrite
assert:
that:
- check_pub.stat.exists
- check_pub.stat.islnk
- check_pub.stat.uid == 0
- name: Create user with ssh key
user:
name: ansibulluser
state: present
generate_ssh_key: yes
ssh_key_file: '{{ ssh_key_file }}'
force: true
ignore_errors: true
register: user_force
- stat: path={{home ~ pub_file}}
register: check_pub2
- name: ensure we failed since we didn't force overwrite
assert:
that:
- user_force is success
- check_pub2.stat.exists
- not check_pub2.stat.islnk
- check_pub2.stat.uid != 0
always:
- name: Clean up files
file: path={{ home ~ item }} state=absent
loop: '{{ key_files + [flagfile.path] }}'
- name: Ensure clean/non existsing ansibulluser
user: name=ansibulluser state=absent