Skip to content

Commit 9116b99

Browse files
committed
orahost_ssh: Role rewritten with modern ansible modules
1 parent e5d2829 commit 9116b99

File tree

8 files changed

+86
-138
lines changed

8 files changed

+86
-138
lines changed

changelogs/fragments/ssh.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
minor_changes:
3+
- "orahost_ssh: Role rewritten with modern ansible modules ()"

roles/orahost_ssh/README.md

Lines changed: 7 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,11 @@
22

33
SSH Setup for Oracle Grid-Infrastructure installations.
44

5-
This role needs a complete refactoring in the future!
6-
75
## Table of content
86

97
- [Requirements](#requirements)
108
- [Default Variables](#default-variables)
11-
- [grid_user](#grid_user)
12-
- [hostgroup](#hostgroup)
13-
- [oracle_group](#oracle_group)
14-
- [oracle_user](#oracle_user)
15-
- [oracle_users](#oracle_users)
16-
- [Discovered Tags](#discovered-tags)
9+
- [orahost_ssh_keyname](#orahost_ssh_keyname)
1710
- [Dependencies](#dependencies)
1811
- [License](#license)
1912
- [Author](#author)
@@ -26,51 +19,20 @@ This role needs a complete refactoring in the future!
2619

2720
## Default Variables
2821

29-
### grid_user
30-
31-
#### Default value
32-
33-
```YAML
34-
grid_user: grid
35-
```
36-
37-
### hostgroup
22+
### orahost_ssh_keyname
3823

39-
#### Default value
24+
The name of used key during role execution.
4025

41-
```YAML
42-
hostgroup: '{{ group_names[0] }}'
43-
```
26+
Example for oracle:
4427

45-
### oracle_group
28+
/home/oracle/.ssh/{{ orahost_ssh_keyname }}
4629

4730
#### Default value
4831

4932
```YAML
50-
oracle_group: oinstall
33+
orahost_ssh_keyname: id_ed25519
5134
```
5235
53-
### oracle_user
54-
55-
#### Default value
56-
57-
```YAML
58-
oracle_user: oracle
59-
```
60-
61-
### oracle_users
62-
63-
#### Default value
64-
65-
```YAML
66-
oracle_users:
67-
- {username: oracle, primgroup: oinstall}
68-
- {username: grid, primgroup: oinstall}
69-
```
70-
71-
## Discovered Tags
72-
73-
**_sshkeys,known_hosts_**
7436
7537
7638
## Dependencies
@@ -84,4 +46,4 @@ license (MIT)
8446
8547
## Author
8648
87-
[Mikael Sandström]
49+
[Thorsten Bruhns]
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
---
2-
# defaults file for host-config-ssh
3-
hostgroup: "{{ group_names[0] }}"
4-
oracle_group: oinstall # Primary group for oracle_user.
5-
oracle_user: oracle
6-
grid_user: grid
7-
oracle_users: # Passwd :Oracle123
8-
- {username: oracle, primgroup: oinstall}
9-
- {username: grid, primgroup: oinstall}
2+
# @var orahost_ssh_keyname:description: >
3+
# The name of used key during role execution.
4+
#
5+
# Example for oracle:
6+
#
7+
# /home/oracle/.ssh/{{ orahost_ssh_keyname }}
8+
# @end
9+
orahost_ssh_keyname: id_ed25519

roles/orahost_ssh/meta/main.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22
# @meta description: >
33
# SSH Setup for Oracle Grid-Infrastructure installations.
44
#
5-
# This role needs a complete refactoring in the future!
65
# @end
7-
# @meta author: [Mikael Sandström]
6+
# @meta author: [Thorsten Bruhns]
87
galaxy_info:
98
role_name: orahost_ssh
10-
author: Mikael Sandström
9+
author: Thorsten Bruhns
1110
description: SSH Setup for Oracle Grid-Infrastructure installations.
12-
company: Mikael Sandström
11+
company: Thorsten Bruhns
1312
license: license (MIT)
1413

1514
min_ansible_version: 2.14.0
@@ -20,6 +19,7 @@ galaxy_info:
2019
- "6"
2120
- "7"
2221
- "8"
22+
- "9"
2323
- name: SLES
2424
versions:
2525
- "15"

roles/orahost_ssh/tasks/known-hosts.yml

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
# Variables:
3+
# _key_owner: oracle
4+
# _key_owner_home: /home/oracle
5+
#
6+
- name: Create .ssh directory for user {{ _key_owner }}
7+
ansible.builtin.file:
8+
path: "{{ _key_owner_home }}/.ssh"
9+
owner: "{{ _key_owner }}"
10+
mode: 0700
11+
state: directory
12+
13+
# Keys are only created when not existing.
14+
- name: Create ssh-key for user {{ _key_owner }}
15+
community.crypto.openssh_keypair:
16+
path: "{{ _key_owner_home }}/.ssh/{{ orahost_ssh_keyname }}"
17+
owner: "{{ _key_owner }}"
18+
type: ed25519
19+
20+
- name: Read public key from remote host for user {{ _key_owner }}
21+
ansible.builtin.slurp:
22+
src: "{{ _key_owner_home }}/.ssh/{{ orahost_ssh_keyname }}.pub"
23+
register: ssh_pubkey_res
24+
25+
# All public keys from all cluster node are added to all authorized keys
26+
# loop over orasw_meta_cluster_hostgroup and write public key to target host.
27+
- name: Add public key to authorized_keys for user {{ _key_owner }}
28+
ansible.posix.authorized_key:
29+
key: >-
30+
{{ hostvars[item]['ssh_pubkey_res']['content'] | b64decode | split('\n') | first }}
31+
user: "{{ _key_owner }}"
32+
state: present
33+
with_items: "{{ groups[orasw_meta_cluster_hostgroup] }}"
34+
35+
- name: Read host key from remote host with ssh-keyscan
36+
ansible.builtin.command: ssh-keyscan -t ecdsa-sha2-nistp256 {{ ansible_hostname }}
37+
register: ssh_hostkey_res
38+
changed_when: ssh_hostkey_res.rc == 0
39+
40+
- name: Add hostkeys to user {{ _key_owner }}
41+
ansible.builtin.known_hosts:
42+
name: "{{ _hostkey_line | split(' ') | first }}"
43+
key: "{{ _hostkey_line }}"
44+
path: "{{ _key_owner_home }}/.ssh/known_hosts"
45+
state: present
46+
with_items: "{{ groups[orasw_meta_cluster_hostgroup] }}"
47+
vars:
48+
_hostkey_line: "{{ hostvars[item]['ssh_hostkey_res']['stdout_lines'] | first }}"

roles/orahost_ssh/tasks/main.yml

Lines changed: 14 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -2,65 +2,19 @@
22
- name: Deploy SSH-Keys on Cluster
33
when:
44
- _oraswgi_meta_configure_cluster | default(false)
5+
- inventory_hostname in groups[orasw_meta_cluster_hostgroup]
56
block:
7+
- name: SSH-Keys for {{ oracle_user }}
8+
ansible.builtin.include_tasks: loop_osuser.yml
9+
vars:
10+
_key_owner_home: "{{ oracle_user_home }}"
11+
_key_owner: "{{ oracle_user }}"
612

7-
- name: ssh-keys | get public key for oracle user
8-
ansible.builtin.shell: cat /home/{{ oracle_user }}/.ssh/id_rsa.pub
9-
# noqa command-instead-of-shell no-changed-when
10-
register: oracle_key
11-
tags:
12-
- sshkeys
13-
14-
- name: ssh-keys | get public key for grid user
15-
ansible.builtin.shell: cat /home/{{ grid_user }}/.ssh/id_rsa.pub
16-
# noqa command-instead-of-shell no-changed-when
17-
register: grid_key
18-
when: role_separation
19-
tags:
20-
- sshkeys
21-
22-
- name: ssh-keys | Add keys for {{ oracle_user }}
23-
ansible.posix.authorized_key:
24-
user: "{{ oracle_user }}"
25-
key: "{{ item[1] }}"
26-
delegate_to: "{{ item[0] }}"
27-
with_nested:
28-
- "{{ groups[hostgroup] }}"
29-
- "{{ oracle_key.stdout }}"
30-
tags:
31-
- sshkeys
32-
when: oracle_key is defined
33-
34-
- name: ssh-keys | Add keys for {{ grid_user }}
35-
ansible.posix.authorized_key:
36-
user: "{{ grid_user }}"
37-
key: "{{ item[1] }}"
38-
delegate_to: "{{ item[0] }}"
39-
with_nested:
40-
- "{{ groups[hostgroup] }}"
41-
- "{{ grid_key.stdout }}"
42-
tags:
43-
- sshkeys
44-
when: role_separation and grid_key is defined
45-
46-
- name: ssh-keys | create .known_hosts
47-
ansible.builtin.file:
48-
path: "/home/{{ item }}/.ssh/known_hosts"
49-
state: touch
50-
owner: "{{ item }}"
51-
group: "{{ oracle_group }}"
52-
mode: 0600
53-
with_items:
54-
- "{{ oracle_user }}"
55-
- "{% if role_separation %}{{ grid_user }}{% else %}[]{% endif %}"
56-
changed_when: false
57-
tags: sshkeys,known_hosts
58-
59-
- name: Deploy known_hosts
60-
ansible.builtin.include_tasks: known-hosts.yml
61-
with_items:
62-
- "{{ oracle_user }}"
63-
- "{% if role_separation %}{{ grid_user }}{% else %}[]{% endif %}"
64-
loop_control:
65-
loop_var: user
66-
tags: sshkeys,known_hosts
13+
- name: SSH-Keys for {{ _grid_install_user }}
14+
ansible.builtin.include_tasks: loop_osuser.yml
15+
vars:
16+
_key_owner_home: "{{ grid_user_home }}"
17+
_key_owner: "{{ _grid_install_user }}"
18+
when:
19+
- role_separation | bool
20+
- oracle_user != _grid_install_user

roles/orahost_ssh/vars/main.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
---
2+
_orahost_ssh_hostkey_filename: /etc/ssh/ssh_host_rsa_key.pub

0 commit comments

Comments
 (0)