Skip to content

Commit 899dd48

Browse files
committed
add missing become: on task demanding root priv
1 parent efb523c commit 899dd48

File tree

13 files changed

+219
-176
lines changed

13 files changed

+219
-176
lines changed

molecule/prepare.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,33 @@
11
---
22
- name: Prepare
33
hosts: all
4+
gather_facts: yes
5+
vars:
6+
sudo_pkg_name: 'sudo'
47
tasks:
58

9+
- name: "Ensure {{ sudo_pkg_name }} is installed (if user is root)."
10+
ansible.builtin.yum:
11+
name: "{{ sudo_pkg_name }}"
12+
when:
13+
- ansible_user_id == 'root'
14+
15+
- name: Gather the package facts
16+
ansible.builtin.package_facts:
17+
manager: auto
18+
19+
- name: "Check if {{ sudo_pkg_name }} is installed."
20+
ansible.builtin.assert:
21+
that:
22+
- sudo_pkg_name in ansible_facts.packages
23+
624
- name: "Ensure required packages are installed."
25+
become: yes
726
ansible.builtin.yum:
827
name:
928
- sudo
1029
state: present
30+
31+
- name: Display Ansible version
32+
ansible.builtin.debug:
33+
msg: "Ansible version is {{ ansible_version.full }}"

roles/amq_streams_broker/defaults/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ amq_streams_broker_server_start: "{{ amq_streams_common_home }}/bin/kafka-server
77
amq_streams_broker_config: "/etc/amq_streams_broker.properties"
88
amq_streams_broker_service_name: 'amq_streams_broker'
99
amq_streams_broker_user: 'amq_streams_broker'
10+
amq_streams_broker_config_files_requires_privilege_escalation: yes
1011
amq_streams_broker_listener_port: 9092
1112
amq_streams_broker_listener_internal_port: 9091
1213
amq_streams_broker_listener_tls_port: 9093

roles/amq_streams_broker/tasks/main.yml

Lines changed: 67 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -35,75 +35,78 @@
3535
when:
3636
- ansible_distribution == "RedHat"
3737

38-
- name: "Ensure broker home dir belongs to appropriate user - if user is defined."
39-
ansible.builtin.file:
40-
path: "{{ amq_streams_common_home }}"
41-
state: directory
42-
owner: "{{ amq_streams_broker_user | default(omit) }}"
43-
group: "{{ amq_streams_broker_group | default(omit) }}"
44-
mode: 0755
45-
changed_when: false # TODO: find a better way to deal with that
38+
- name: "Escalade privilge to root"
39+
become: "{{ amq_streams_broker_config_files_requires_privilege_escalation }}"
40+
block:
41+
- name: "Ensure broker home dir belongs to appropriate user - if user is defined."
42+
ansible.builtin.file:
43+
path: "{{ amq_streams_common_home }}"
44+
state: directory
45+
owner: "{{ amq_streams_broker_user | default(omit) }}"
46+
group: "{{ amq_streams_broker_group | default(omit) }}"
47+
mode: 0755
48+
changed_when: false # TODO: find a better way to deal with that
4649

47-
- name: "Ensure Broker data dir exists and belongs to the appropriate user - if user is defined."
48-
ansible.builtin.file:
49-
path: "{{ amq_streams_broker_data_dir }}"
50-
state: directory
51-
owner: "{{ amq_streams_broker_user | default(omit) }}"
52-
group: "{{ amq_streams_broker_group | default(omit) }}"
53-
mode: 0755
54-
when:
55-
- amq_streams_broker_data_dir is defined
50+
- name: "Ensure Broker data dir exists and belongs to the appropriate user - if user is defined."
51+
ansible.builtin.file:
52+
path: "{{ amq_streams_broker_data_dir }}"
53+
state: directory
54+
owner: "{{ amq_streams_broker_user | default(omit) }}"
55+
group: "{{ amq_streams_broker_group | default(omit) }}"
56+
mode: 0755
57+
when:
58+
- amq_streams_broker_data_dir is defined
5659

57-
- name: "Set server_id for {{ amq_streams_broker.service_name }} service."
58-
ansible.builtin.set_fact:
59-
server_id: "{{ amq_streams_broker_broker_id | default('0') }}"
60-
when:
61-
- not server_id is defined
60+
- name: "Set server_id for {{ amq_streams_broker.service_name }} service."
61+
ansible.builtin.set_fact:
62+
server_id: "{{ amq_streams_broker_broker_id | default('0') }}"
63+
when:
64+
- not server_id is defined
6265

63-
- name: "Configure Broker-Zookeeper authentication"
64-
ansible.builtin.template:
65-
src: "{{ amq_streams_broker_zookeeper_auth_config_template }}"
66-
dest: "{{ amq_streams_broker_zookeeper_auth_config }}"
67-
owner: "{{ amq_streams_broker_user | default(omit) }}"
68-
group: "{{ amq_streams_broker_group | default(omit) }}"
69-
mode: 0644
70-
when:
71-
- amq_streams_zookeeper_auth_enabled is defined and amq_streams_zookeeper_auth_enabled
66+
- name: "Configure Broker-Zookeeper authentication"
67+
ansible.builtin.template:
68+
src: "{{ amq_streams_broker_zookeeper_auth_config_template }}"
69+
dest: "{{ amq_streams_broker_zookeeper_auth_config }}"
70+
owner: "{{ amq_streams_broker_user | default(omit) }}"
71+
group: "{{ amq_streams_broker_group | default(omit) }}"
72+
mode: 0644
73+
when:
74+
- amq_streams_zookeeper_auth_enabled is defined and amq_streams_zookeeper_auth_enabled
7275

73-
- name: "Enable Broker-Zookeeper authentication environment variable"
74-
ansible.builtin.set_fact:
75-
amq_streams_broker_java_opts: "-Djava.security.auth.login.config={{ amq_streams_broker_zookeeper_auth_config }}"
76-
when:
77-
- amq_streams_zookeeper_auth_enabled is defined and amq_streams_zookeeper_auth_enabled
76+
- name: "Enable Broker-Zookeeper authentication environment variable"
77+
ansible.builtin.set_fact:
78+
amq_streams_broker_java_opts: "-Djava.security.auth.login.config={{ amq_streams_broker_zookeeper_auth_config }}"
79+
when:
80+
- amq_streams_zookeeper_auth_enabled is defined and amq_streams_zookeeper_auth_enabled
7881

79-
- name: "Wait for Zookeeper to be available - if enabled ({{ amq_streams_broker_zookeeper_host }}:{{ amq_streams_broker_zookeeper_port }})."
80-
ansible.builtin.wait_for:
81-
host: "{{ amq_streams_broker_zookeeper_host }}"
82-
port: "{{ amq_streams_broker_zookeeper_port }}"
83-
when:
84-
- amq_streams_broker_zookeeper_wait is defined and amq_streams_broker_zookeeper_wait
85-
- amq_streams_broker_zookeeper_host is defined
86-
- amq_streams_broker_zookeeper_port is defined
82+
- name: "Wait for Zookeeper to be available - if enabled ({{ amq_streams_broker_zookeeper_host }}:{{ amq_streams_broker_zookeeper_port }})."
83+
ansible.builtin.wait_for:
84+
host: "{{ amq_streams_broker_zookeeper_host }}"
85+
port: "{{ amq_streams_broker_zookeeper_port }}"
86+
when:
87+
- amq_streams_broker_zookeeper_wait is defined and amq_streams_broker_zookeeper_wait
88+
- amq_streams_broker_zookeeper_host is defined
89+
- amq_streams_broker_zookeeper_port is defined
8790

88-
- name: "Copy Server Keystore with certificates"
89-
ansible.builtin.copy:
90-
src: "{{ amq_streams_broker_tls_keystore_dir }}/{{ amq_streams_broker_tls_keystore }}"
91-
dest: "{{ amq_streams_broker_tls_keystore_location }}/{{ amq_streams_broker_tls_keystore }}"
92-
force: true
93-
owner: "{{ amq_streams_broker_user | default(omit) }}"
94-
group: "{{ amq_streams_broker_group | default(omit) }}"
95-
when:
96-
- amq_streams_broker_tls_enabled is defined and amq_streams_broker_tls_enabled
91+
- name: "Copy Server Keystore with certificates"
92+
ansible.builtin.copy:
93+
src: "{{ amq_streams_broker_tls_keystore_dir }}/{{ amq_streams_broker_tls_keystore }}"
94+
dest: "{{ amq_streams_broker_tls_keystore_location }}/{{ amq_streams_broker_tls_keystore }}"
95+
force: true
96+
owner: "{{ amq_streams_broker_user | default(omit) }}"
97+
group: "{{ amq_streams_broker_group | default(omit) }}"
98+
when:
99+
- amq_streams_broker_tls_enabled is defined and amq_streams_broker_tls_enabled
97100

98-
- name: "Copy Server Truststore with certificates"
99-
ansible.builtin.copy:
100-
src: "{{ amq_streams_broker_tls_truststore_dir }}/{{ amq_streams_broker_tls_truststore }}"
101-
dest: "{{ amq_streams_broker_tls_truststore_location }}/{{ amq_streams_broker_tls_truststore }}"
102-
force: true
103-
owner: "{{ amq_streams_broker_user | default(omit) }}"
104-
group: "{{ amq_streams_broker_group | default(omit) }}"
105-
when:
106-
- amq_streams_broker_tls_enabled is defined and amq_streams_broker_tls_enabled
101+
- name: "Copy Server Truststore with certificates"
102+
ansible.builtin.copy:
103+
src: "{{ amq_streams_broker_tls_truststore_dir }}/{{ amq_streams_broker_tls_truststore }}"
104+
dest: "{{ amq_streams_broker_tls_truststore_location }}/{{ amq_streams_broker_tls_truststore }}"
105+
force: true
106+
owner: "{{ amq_streams_broker_user | default(omit) }}"
107+
group: "{{ amq_streams_broker_group | default(omit) }}"
108+
when:
109+
- amq_streams_broker_tls_enabled is defined and amq_streams_broker_tls_enabled
107110

108-
- name: "Configure service for Broker (if enable)."
109-
ansible.builtin.include_tasks: service.yml
111+
- name: "Configure service for Broker (if enable)."
112+
ansible.builtin.include_tasks: service.yml

roles/amq_streams_common/defaults/main.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,20 @@ amq_streams_common_archive_file: "kafka_{{ amq_streams_common_version }}.tgz"
1111
amq_streams_common_rhn_product_archive_file_pattern: '^.*/amq-streams-[0-9.]*-bin.zip$'
1212
amq_streams_common_download_url: "https://archive.apache.org/dist/kafka/{{ amq_streams_common_product_version }}/kafka_{{ amq_streams_common_version }}.tgz"
1313
amq_streams_common_download_dir: "{{ lookup('env','PWD') | default('/opt') }}"
14-
#amq_streams_common_download_user: "{{ lookup('env','USER') | default('root') }}"
14+
amq_streams_common_archive_extraction_requires_privilege_escalation: yes
1515
#amq_streams_common_download_group: "{{ lookup('env','USER') | default('root') }}"
16+
#amq_streams_common_download_user: "{{ lookup('env','USER') | default('root') }}"
17+
amq_streams_common_escalade_privilege_user_create: yes
18+
amq_streams_common_escalade_privilege_user_group: yes
19+
amq_streams_common_escalade_privilege_group_create: yes
20+
amq_streams_common_escalade_privilege_config_file: yes
1621
amq_streams_common_install_dir: /opt
1722
amq_streams_common_offline_install: false
1823
amq_streams_common_path_to_archive_file: "{{ amq_streams_common_download_dir }}/{{ amq_streams_common_archive_file }}"
1924
amq_streams_common_download_node: localhost
2025
amq_streams_common_systctl_update_enabled: false
2126
amq_streams_common_prereqs_dependencies: ['tar']
27+
amq_streams_common_dependencies_require_priv: yes
2228
amq_streams_common_openjdk_version: 17
2329

2430
amq_streams_common_systemd_home: '/usr/lib/systemd/system'

roles/amq_streams_common/tasks/install.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
register: download_target
4141

4242
- name: "Extract artifact {{ amq_streams_common_archive_file }} to {{ amq_streams_common_install_dir }}"
43+
become: "{{ amq_streams_common_archive_extraction_requires_privilege_escalation }}"
4344
ansible.builtin.unarchive:
4445
src: "{{ amq_streams_common_download_dir }}/{{ amq_streams_common_archive_file }}"
4546
dest: "{{ amq_streams_common_install_dir }}"

roles/amq_streams_common/tasks/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
- openjdk_package_name is defined and openjdk_package_name | length > 0
1414

1515
- name: "Ensure all required system dependencies are present: {{ amq_streams_common_dependencies }}"
16+
become: "{{ amq_streams_common_dependencies_require_priv }}"
1617
ansible.builtin.package:
1718
name: "{{ amq_streams_common_dependencies }}"
1819
state: present

roles/amq_streams_common/tasks/systemd.yml

Lines changed: 65 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -5,77 +5,74 @@
55
- server_name is defined
66
quiet: true
77

8-
- name: "Ensure {{ server_name }} configuration is deployed ({{ server_config_template }} -> {{ server_config }}."
9-
ansible.builtin.template:
10-
src: "{{ server_config_template }}"
11-
dest: "{{ server_config }}"
12-
owner: root
13-
group: root
14-
mode: 0644
15-
when:
16-
- server_config_template is defined and server_config is defined
17-
notify:
18-
- "Restart {{ server_name }}"
19-
become: yes
8+
- name: "Switch to root"
9+
become: "{{ amq_streams_common_escalade_privilege_group_create }}"
10+
block:
11+
- name: "Ensure {{ server_name }} configuration is deployed ({{ server_config_template }} -> {{ server_config }}."
12+
ansible.builtin.template:
13+
src: "{{ server_config_template }}"
14+
dest: "{{ server_config }}"
15+
owner: root
16+
group: root
17+
mode: 0644
18+
when:
19+
- server_config_template is defined and server_config is defined
20+
notify:
21+
- "Restart {{ server_name }}"
2022

21-
- name: "Ensure log dir belongs to the appropriate user and group - if all provided"
22-
ansible.builtin.file:
23-
path: "{{ server_log_dir }}"
24-
owner: "{{ server_user }}"
25-
group: "{{ server_group }}"
26-
state: directory
27-
when:
28-
- server_log_dir is defined
29-
- server_user is defined
30-
- server_group is defined
31-
become: yes
23+
- name: "Ensure log dir belongs to the appropriate user and group - if all provided"
24+
ansible.builtin.file:
25+
path: "{{ server_log_dir }}"
26+
owner: "{{ server_user }}"
27+
group: "{{ server_group }}"
28+
state: directory
29+
when:
30+
- server_log_dir is defined
31+
- server_user is defined
32+
- server_group is defined
3233

33-
- name: "Deploy server configuration - if provided."
34-
ansible.builtin.template:
35-
src: "{{ service_systemd_env_file_template | default('templates/service.conf.j2') }}"
36-
dest: "{{ service_systemd_env_file }}"
37-
owner: root
38-
group: root
39-
mode: 0644
40-
when:
41-
- service_systemd_env_file is defined
42-
become: yes
34+
- name: "Deploy server configuration - if provided."
35+
ansible.builtin.template:
36+
src: "{{ service_systemd_env_file_template | default('templates/service.conf.j2') }}"
37+
dest: "{{ service_systemd_env_file }}"
38+
owner: root
39+
group: root
40+
mode: 0644
41+
when:
42+
- service_systemd_env_file is defined
4343

44-
- name: "Deploy Systemd descriptor for service: {{ server_name }}"
45-
ansible.builtin.template:
46-
src: "{{ server_service_config_file_template | default(amq_streams_common.systemd.service_config_file_template) }}"
47-
dest: "{{ server_systemd_home | default(amq_streams_common.systemd.home) }}/{{ server_systemd_name | default(server_name + '.service') }}"
48-
group: root
49-
owner: root
50-
mode: 0644
51-
vars:
52-
service_description: "{{ server_description | default(server_name) }}"
53-
service_user: "{{ server_user | default('root') }}"
54-
service_group: "{{ server_group | default('root') }}"
55-
service_pidfile: "{{ server_pidfile | default(omit) }}"
56-
service_start_sleep: "{{ server_start_sleep | default(0) }}"
57-
register: daemon_reload
58-
become: yes
44+
- name: "Deploy Systemd descriptor for service: {{ server_name }}"
45+
ansible.builtin.template:
46+
src: "{{ server_service_config_file_template | default(amq_streams_common.systemd.service_config_file_template) }}"
47+
dest: "{{ server_systemd_home | default(amq_streams_common.systemd.home) }}/{{ server_systemd_name | default(server_name + '.service') }}"
48+
group: root
49+
owner: root
50+
mode: 0644
51+
vars:
52+
service_description: "{{ server_description | default(server_name) }}"
53+
service_user: "{{ server_user | default('root') }}"
54+
service_group: "{{ server_group | default('root') }}"
55+
service_pidfile: "{{ server_pidfile | default(omit) }}"
56+
service_start_sleep: "{{ server_start_sleep | default(0) }}"
57+
register: daemon_reload
5958

60-
- name: "Perform daemon-reload to ensure the changes are picked up"
61-
ansible.builtin.systemd:
62-
daemon_reload: yes
63-
become: yes
64-
when:
65-
- daemon_reload is defined
66-
- daemon_reload.changed
59+
- name: "Perform daemon-reload to ensure the changes are picked up"
60+
ansible.builtin.systemd:
61+
daemon_reload: yes
62+
when:
63+
- daemon_reload is defined
64+
- daemon_reload.changed
6765

68-
- name: "Ensure {{ server_name }} is enabled and running."
69-
ansible.builtin.service:
70-
name: "{{ server_name }}"
71-
enabled: yes
72-
state: started
73-
become: yes
66+
- name: "Ensure {{ server_name }} is enabled and running."
67+
ansible.builtin.service:
68+
name: "{{ server_name }}"
69+
enabled: yes
70+
state: started
7471

75-
- name: "Wait for service port {{ server_port }} to be available - (if provided)"
76-
ansible.builtin.wait_for:
77-
port: "{{ server_port }}"
78-
delay: "{{ delay_before_server_port_check | default(omit) }}"
79-
when:
80-
- skip_wait_for_server_port is defined and not skip_wait_for_server_port
81-
- server_port is defined and server_port != ''
72+
- name: "Wait for service port {{ server_port }} to be available - (if provided)"
73+
ansible.builtin.wait_for:
74+
port: "{{ server_port }}"
75+
delay: "{{ delay_before_server_port_check | default(omit) }}"
76+
when:
77+
- skip_wait_for_server_port is defined and not skip_wait_for_server_port
78+
- server_port is defined and server_port != ''

roles/amq_streams_common/tasks/user_group.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@
77
quiet: true
88

99
- name: "Ensure required group {{ group }} exists."
10+
become: "{{ amq_streams_common_escalade_privilege_group_create }}"
1011
ansible.builtin.group:
1112
name: "{{ group }}"
1213

1314
- name: "Ensure required user {{ user }} exists."
15+
become: "{{ amq_streams_common_escalade_privilege_user_create }}"
1416
ansible.builtin.user:
1517
name: "{{ user }}"
1618
group: "{{ group }}"

roles/amq_streams_connect/defaults/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ amq_streams_connect_file_connector_data:
88
#
99
amq_streams_connect_file_source_conf: "{{ amq_streams_common_home }}/config/connect-file-source.properties"
1010
amq_streams_connect_file_sink: "{{ amq_streams_common_home }}/config/connect-file-sink.properties"
11-
#
11+
amq_streams_connect_source_file_require_priv_escalation: yes
1212
amq_streams_connect_service_name: amq_streams_connect
1313
amq_streams_connect_logs_dir: "/var/log/{{ amq_streams_connect_service_name }}/"
1414
amq_streams_connect_server_start: "{{ amq_streams_common_home }}/bin/connect-standalone.sh"

0 commit comments

Comments
 (0)