diff --git a/molecule/default/verify.yml b/molecule/default/verify.yml index d47c13b..d2c9d95 100644 --- a/molecule/default/verify.yml +++ b/molecule/default/verify.yml @@ -6,7 +6,7 @@ ansible.builtin.service_facts: - name: Check if amq_streams service started - assert: + ansible.builtin.assert: that: - ansible_facts.services["amq_streams_broker.service"]["state"] == "running" - ansible_facts.services["amq_streams_broker.service"]["status"] == "enabled" diff --git a/molecule/prepare.yml b/molecule/prepare.yml index 28b8ffa..cfb4dd6 100644 --- a/molecule/prepare.yml +++ b/molecule/prepare.yml @@ -5,6 +5,9 @@ vars: sudo_pkg_name: 'sudo' tasks: + - name: Display Ansible version + ansible.builtin.debug: + msg: "Ansible version is {{ ansible_version.full }}" - name: "Ensure {{ sudo_pkg_name }} is installed (if user is root)." ansible.builtin.yum: @@ -27,7 +30,3 @@ name: - sudo state: present - - - name: Display Ansible version - ansible.builtin.debug: - msg: "Ansible version is {{ ansible_version.full }}" diff --git a/roles/amq_streams_broker/meta/argument_specs.yml b/roles/amq_streams_broker/meta/argument_specs.yml index dcace88..62de698 100644 --- a/roles/amq_streams_broker/meta/argument_specs.yml +++ b/roles/amq_streams_broker/meta/argument_specs.yml @@ -8,180 +8,228 @@ argument_specs: type: "str" # line 3 of defaults/main.yml + amq_streams_broker_kafka_config_script: + default: "{{ amq_streams_common_home }}/bin/kafka-configs.sh" + description: "TODO document argument" + type: "str" + + # line 4 of defaults/main.yml + amq_streams_broker_kafka_acl_script: + default: "{{ amq_streams_common_home }}/bin/kafka-acls.sh" + description: "TODO document argument" + type: "str" + + # line 5 of defaults/main.yml amq_streams_broker_enabled: default: true description: "Whether or not Ansible should deploy and manage broker on target" type: "bool" - # line 4 of defaults/main.yml + # line 6 of defaults/main.yml amq_streams_broker_server_start: default: "{{ amq_streams_common_home }}/bin/kafka-server-start.sh" description: "Provides path to the script used to start the broker" type: "str" - # line 5 of defaults/main.yml + # line 7 of defaults/main.yml amq_streams_broker_config: default: "/etc/amq_streams_broker.properties" description: "Path to the broker properties configuration file" type: "str" - # line 6 of defaults/main.yml + # line 8 of defaults/main.yml amq_streams_broker_service_name: default: "amq_streams_broker" description: "Name of the systemd service associated to the broker" type: "str" - # line 7 of defaults/main.yml + # line 9 of defaults/main.yml amq_streams_broker_user: default: "amq_streams_broker" description: "Name of the user account running the broker" type: "str" - # line 8 of defaults/main.yml + # line 10 of defaults/main.yml + amq_streams_broker_config_files_requires_privilege_escalation: + default: true + description: "TODO document argument" + type: "bool" + + # line 11 of defaults/main.yml amq_streams_broker_listener_port: default: 9092 description: "Port used by the broker listener" type: "int" - # line 9 of defaults/main.yml + # line 12 of defaults/main.yml amq_streams_broker_listener_internal_port: default: 9091 description: "Internal port used by the broker" type: "int" - # line 10 of defaults/main.yml + # line 13 of defaults/main.yml + amq_streams_broker_listener_tls_port: + default: 9093 + description: "TODO document argument" + type: "int" + + # line 14 of defaults/main.yml + amq_streams_broker_listener_port_delay: + default: 0 + description: "TODO document argument" + type: "int" + + # line 15 of defaults/main.yml + amq_streams_broker_listener_port_skip_wait: + default: false + description: "TODO document argument" + type: "bool" + + # line 16 of defaults/main.yml amq_streams_broker_group: default: "amq_streams" description: "Name of the system group used to run the broker" type: "str" - # line 11 of defaults/main.yml + # line 17 of defaults/main.yml amq_streams_broker_service_config_template: default: "templates/service.conf.j2" description: "relative path to the template used for the systemd service configuration for the broker" type: "str" - # line 12 of defaults/main.yml + # line 18 of defaults/main.yml amq_streams_broker_service_config_file: default: "/etc/broker.conf" description: "Path to the system service config on target" type: "str" - # line 13 of defaults/main.yml + # line 19 of defaults/main.yml amq_streams_broker_data_dir: default: "/var/lib/{{ amq_streams_broker_service_name }}" description: "Path to the broker's datadir on target" type: "str" - # line 14 of defaults/main.yml + # line 20 of defaults/main.yml amq_streams_broker_logs_dir: default: "/var/log/{{ amq_streams_broker_service_name }}/" description: "Path to the broker's logdir on target" type: "str" - # line 15 of defaults/main.yml + # line 21 of defaults/main.yml amq_streams_broker_num_network_threads: default: 3 description: "Number of network threads for the broker" type: "int" - # line 16 of defaults/main.yml + # line 22 of defaults/main.yml amq_streams_broker_num_io_threads: default: 8 description: "Number of i/o threads for the broker" type: "int" - # line 17 of defaults/main.yml + # line 23 of defaults/main.yml amq_streams_broker_buffer_send_bytes: default: 102400 description: "Value of the buffer send bytes of the broker" type: "int" - # line 18 of defaults/main.yml + # line 24 of defaults/main.yml amq_streams_broker_buffer_bytes: default: 102400 description: "Value of the buffer bytes of the broker" type: "int" - # line 19 of defaults/main.yml + # line 25 of defaults/main.yml amq_streams_broker_socket_request_max_bytes: default: 104857600 description: "Value of the socket request max bytes" type: "int" - # line 20 of defaults/main.yml + # line 26 of defaults/main.yml amq_streams_broker_num_partitions: default: 1 description: "Number of partitions" type: "int" - # line 21 of defaults/main.yml + # line 27 of defaults/main.yml amq_streams_broker_num_recovery_threads_per_data_dir: default: 1 description: "Number of recovery threads per datadir" type: "int" - # line 22 of defaults/main.yml + # line 28 of defaults/main.yml + amq_streams_broker_sysctl_vm_max_map_count: + default: 65530 + description: "TODO document argument" + type: "int" + + # line 29 of defaults/main.yml + amq_streams_broker_ulimit_max_value: + default: 1024 + description: "TODO document argument" + type: "int" + + # line 30 of defaults/main.yml amq_streams_broker_offsets_topic_replication_factor: default: 1 description: "Broker's offeset topic replication factor" type: "int" - # line 23 of defaults/main.yml + # line 31 of defaults/main.yml amq_streams_broker_transaction_state_log_replication_factor: default: 1 description: "Transaction state log replication factor" type: "int" - # line 24 of defaults/main.yml + # line 32 of defaults/main.yml amq_streams_broker_transaction_state_log_min_isr: default: 1 description: "Transaction state log min isr" type: "int" - # line 25 of defaults/main.yml + # line 33 of defaults/main.yml amq_streams_broker_log_retention_hours: default: 168 description: "Broker's log retention (in hours)" type: "int" - # line 26 of defaults/main.yml + # line 34 of defaults/main.yml amq_streams_broker_log_retention_check_interval_ms: default: 300000 description: "Broker's log retention check interval (in milliseconds)" type: "int" - # line 27 of defaults/main.yml + # line 35 of defaults/main.yml amq_streams_broker_zookeeper_connection_timeout_ms: default: 30000 description: "Zookeeper connection timeout (in milliseconds) for the broker" type: "int" - # line 28 of defaults/main.yml + # line 36 of defaults/main.yml amq_streams_broker_zookeeper_session_timeout_ms: default: 18000 description: "Zookeeper session timeout (in milliseconds) for the broker" type: "int" - # line 29 of defaults/main.yml + # line 37 of defaults/main.yml amq_streams_broker_group_initial_rebalance_delay_ms: default: 0 description: "Broker's group initial rebalance delay (in milliseconds)" type: "int" - # line 30 of defaults/main.yml + # line 38 of defaults/main.yml amq_streams_broker_properties_template: default: "templates/server.properties.j2" description: "Relative path to the template used for the broker's server.properties" type: "str" - # line 31 of defaults/main.yml + # line 39 of defaults/main.yml amq_streams_broker_java_heap_opts: default: "-Xmx1G -Xms1G" description: "Broker's Java heap's options" type: "str" - # line 33 of defaults/main.yml + # line 41 of defaults/main.yml amq_streams_broker_bootstrap_server_host: default: "localhost" description: "Broker boostrap's server host" @@ -211,110 +259,278 @@ argument_specs: description: "Whether or not Ansible should count and keep track of the number of instances of broker deployed in the cluster" type: "bool" - # line 41 of defaults/main.yml + # line 49 of defaults/main.yml + amq_streams_broker_inventory_group_name: + default: "brokers" + description: "TODO document argument" + type: "str" + + # line 50 of defaults/main.yml amq_streams_broker_instance_count: - default: 0 + default: "{{ groups[amq_streams_broker_inventory_group_name] | length }}" description: "Number of broker instances deployed by Ansible" type: "int" - # line 43 of defaults/main.yml + # line 52 of defaults/main.yml amq_streams_deployment_balance_check_enabled: default: true description: "Whether or not the zk/broker balance check is enabled" type: "bool" - # line 45 of defaults/main.yml + # line 54 of defaults/main.yml amq_streams_broker_zookeeper_host_default_value: - default: "localhost" + default: "{{ groups['zookeepers'][0] | default('localhost') }}" description: "Hostname of the Zookeeper instance to be used by the broker" type: "str" - # line 46 of defaults/main.yml + # line 55 of defaults/main.yml amq_streams_broker_zookeeper_port_default_value: default: 2181 description: "Port of the Zookeeper used by the broker" type: "int" - # line 47 of defaults/main.yml + # line 56 of defaults/main.yml amq_streams_broker_zookeeper_wait: - default: true + default: false description: "How long should the broker before attempting to connect to the Zk" type: "bool" - # line 50 of defaults/main.yml + # line 59 of defaults/main.yml amq_streams_zookeeper_auth_enabled: - default: "false" + default: false description: "Whether or not authentification with Zk is enabled or not" - type: "str" + type: "bool" - # line 51 of defaults/main.yml + # line 60 of defaults/main.yml amq_streams_broker_zookeeper_auth_config: default: "/etc/broker-jaas.conf" description: "Path to the broker-jass.conf file on the target system" type: "str" - # line 52 of defaults/main.yml + # line 61 of defaults/main.yml amq_streams_broker_zookeeper_auth_config_template: default: "templates/broker-jaas.conf.j2" description: "Relative path to the templates used to generate the content of the broker-jaas.conf file" type: "str" - # line 55 of defaults/main.yml + # line 64 of defaults/main.yml amq_streams_broker_listeners: default: "['PLAINTEXT://:{{ amq_streams_broker_listener_port }}']" description: "Broker's listeners configuration" type: "list" - # line 61 of defaults/main.yml + # line 74 of defaults/main.yml amq_streams_broker_auth_enabled: - default: "false" + default: false description: "Whether or not authentification between brokers" - type: "str" + type: "bool" - # line 62 of defaults/main.yml + # line 75 of defaults/main.yml amq_streams_broker_auth_scram_enabled: - default: "false" + default: false description: "Whether or not scram authentification is enabled" - type: "str" + type: "bool" - # line 63 of defaults/main.yml + # line 76 of defaults/main.yml amq_streams_connect_broker_auth_username: default: "broker" description: "Broker's username for Connect" type: "str" - # line 64 of defaults/main.yml + # line 77 of defaults/main.yml amq_streams_connect_broker_auth_password: default: "PLEASE_CHANGEME_IAMNOTGOOD_FOR_PRODUCTION" description: "Value of the password used for Connect" type: "str" - # line 66 of defaults/main.yml + # line 79 of defaults/main.yml amq_streams_broker_auth_listeners: default: "['PLAINTEXT:PLAINTEXT']" description: "Broker authentification listeners configuration" type: "list" - # line 71 of defaults/main.yml + # line 86 of defaults/main.yml amq_streams_broker_auth_sasl_mechanisms: default: "['PLAIN']" description: "Broker's authentification sasl mechnisms used" type: "list" - # line 75 of defaults/main.yml + # line 90 of defaults/main.yml + amq_streams_broker_tls_enabled: + default: false + description: "TODO document argument" + type: "bool" + + # line 92 of defaults/main.yml + amq_streams_broker_tls_keystore_dir: + default: "/tmp" + description: "TODO document argument" + type: "str" + + # line 93 of defaults/main.yml + amq_streams_broker_tls_keystore: + default: "server.keystore.jks" + description: "TODO document argument" + type: "str" + + # line 94 of defaults/main.yml + amq_streams_broker_tls_keystore_location: + default: "/opt" + description: "TODO document argument" + type: "str" + + # line 95 of defaults/main.yml + amq_streams_broker_tls_keystore_password: + default: "PLEASE_CHANGEME_IAMNOTGOOD_FOR_PRODUCTION" + description: "TODO document argument" + type: "str" + + # line 96 of defaults/main.yml + amq_streams_broker_tls_truststore_dir: + default: "/tmp" + description: "TODO document argument" + type: "str" + + # line 97 of defaults/main.yml + amq_streams_broker_tls_truststore: + default: "server.truststore.jks" + description: "TODO document argument" + type: "str" + + # line 98 of defaults/main.yml + amq_streams_broker_tls_truststore_location: + default: "/opt" + description: "TODO document argument" + type: "str" + + # line 99 of defaults/main.yml + amq_streams_broker_tls_truststore_password: + default: "PLEASE_CHANGEME_IAMNOTGOOD_FOR_PRODUCTION" + description: "TODO document argument" + type: "str" + + # line 101 of defaults/main.yml + amq_streams_broker_tls_truststore_client_dir: + default: "/tmp" + description: "TODO document argument" + type: "str" + + # line 102 of defaults/main.yml + amq_streams_broker_tls_truststore_client: + default: "client.truststore.jks" + description: "TODO document argument" + type: "str" + + # line 103 of defaults/main.yml + amq_streams_broker_tls_truststore_client_require_priv_escalation: + default: true + description: "TODO document argument" + type: "bool" + + # line 104 of defaults/main.yml + amq_streams_broker_tls_truststore_client_location: + default: "/opt" + description: "TODO document argument" + type: "str" + + # line 105 of defaults/main.yml + amq_streams_broker_tls_truststore_client_password: + default: "PLEASE_CHANGEME_IAMNOTGOOD_FOR_PRODUCTION" + description: "TODO document argument" + type: "str" + + # line 106 of defaults/main.yml + amq_streams_broker_admin_cli_log4j_opts: + default: " " + description: "TODO document argument" + type: "str" + + # line 107 of defaults/main.yml + amq_streams_broker_admin_cli_log_dir: + default: " " + description: "TODO document argument" + type: "str" + + # line 108 of defaults/main.yml + amq_streams_broker_admin_cli_jmx_opts: + default: " " + description: "TODO document argument" + type: "str" + + # line 110 of defaults/main.yml amq_streams_broker_server_log_validation_min_size: default: 20 description: "Broker's serverl log validation minimal size (to consider the broker running and functionnal)" type: "int" - # line 77 of defaults/main.yml + # line 112 of defaults/main.yml amq_streams_broker_inventory_group: - default: "{{ groups['brokers'] | default('') }}" + default: "{{ groups['brokers'] | default([]) }}" description: "Broker inventory" type: "str" - # line 78 of defaults/main.yml + # line 113 of defaults/main.yml amq_streams_zookeeper_inventory_group: - default: "{{ groups['zookeepers'] | default('') }}" + default: "{{ groups['zookeepers'] | default([]) }}" description: "Zookeepers inventory" type: "str" + + # line 115 of defaults/main.yml + amq_streams_broker_admin_cli_config_template: + default: "templates/admin-cli.properties.j2" + description: "TODO document argument" + type: "str" + + # line 116 of defaults/main.yml + amq_streams_broker_admin_cli_config_file: + default: "/tmp/admin-cli.properties" + description: "TODO document argument" + type: "str" + + # line 117 of defaults/main.yml + amq_streams_broker_admin_mechanism: + default: "PLAIN" + description: "TODO document argument" + type: "str" + + # line 118 of defaults/main.yml + amq_streams_broker_admin_username: + default: "PLEASE_IDENTIFY_THE_ADMIN_USER" + description: "TODO document argument" + type: "str" + + # line 119 of defaults/main.yml + amq_streams_broker_admin_password: + default: "PLEASE_CHANGEME_IAMNOTGOOD_FOR_PRODUCTION" + description: "TODO document argument" + type: "str" + + # line 121 of defaults/main.yml + amq_streams_broker_prometheus_enabled: + default: false + description: "TODO document argument" + type: "bool" + + # line 122 of defaults/main.yml + amq_streams_broker_prometheus_port: + default: 18080 + description: "TODO document argument" + type: "int" + + # line 123 of defaults/main.yml + amq_streams_broker_prometheus_bind_addr: + default: "0.0.0.0" + description: "TODO document argument" + type: "str" + + # line 124 of defaults/main.yml + amq_streams_broker_prometheus_config_file: + default: "broker-config.yaml" + description: "TODO document argument" + type: "str" + + # line 125 of defaults/main.yml + amq_streams_broker_prometheus_config_file_template: + default: "prometheus/broker-config.yaml.j2" + description: "TODO document argument" + type: "str" diff --git a/roles/amq_streams_broker/tasks/topic/create.yml b/roles/amq_streams_broker/tasks/topic/create.yml index 0faac2a..bbbafa3 100644 --- a/roles/amq_streams_broker/tasks/topic/create.yml +++ b/roles/amq_streams_broker/tasks/topic/create.yml @@ -1,4 +1,7 @@ --- +- name: "Ensure prerequistes are in place" + ansible.builtin.include_tasks: topic/prereqs.yml + - name: "Create topic using the bootstrap server." block: - name: "Set bootstrap partitions to create topic (if defined)." diff --git a/roles/amq_streams_broker/tasks/topic/delete.yml b/roles/amq_streams_broker/tasks/topic/delete.yml index 1a0b5ef..521992f 100644 --- a/roles/amq_streams_broker/tasks/topic/delete.yml +++ b/roles/amq_streams_broker/tasks/topic/delete.yml @@ -1,4 +1,7 @@ --- +- name: "Ensure prerequistes are in place" + ansible.builtin.include_tasks: topic/prereqs.yml + - name: "Delete topic using the bootstrap server." block: - name: "Use bootstrap server to delete topic {{ topic_name }}" diff --git a/roles/amq_streams_broker/tasks/topic/describe.yml b/roles/amq_streams_broker/tasks/topic/describe.yml index d8ed5fe..b429159 100644 --- a/roles/amq_streams_broker/tasks/topic/describe.yml +++ b/roles/amq_streams_broker/tasks/topic/describe.yml @@ -1,4 +1,7 @@ --- +- name: "Ensure prerequistes are in place" + ansible.builtin.include_tasks: topic/prereqs.yml + - name: "Get description of topic using the bootstrap server." ansible.builtin.include_tasks: cli/bootstrap.yml vars: diff --git a/roles/amq_streams_broker/tasks/topic/prereqs.yml b/roles/amq_streams_broker/tasks/topic/prereqs.yml new file mode 100644 index 0000000..48dadb5 --- /dev/null +++ b/roles/amq_streams_broker/tasks/topic/prereqs.yml @@ -0,0 +1,7 @@ +--- +- name: "Ensure path to broker home dir is defined" + ansible.builtin.set_fact: + amq_streams_common_home: "{{ amq_streams_common_install_dir }}/{{ amq_streams_common_rhn_home_dir }}" + when: + - (amq_streams_common_home is defined and not amq_streams_common_home is exists) or not amq_streams_common_home is defined + - amq_streams_common_redhat_enabled is defined and amq_streams_common_redhat_enabled diff --git a/roles/amq_streams_common/meta/argument_specs.ym.bck b/roles/amq_streams_common/meta/argument_specs.ym.bck new file mode 100644 index 0000000..0f5c0c0 --- /dev/null +++ b/roles/amq_streams_common/meta/argument_specs.ym.bck @@ -0,0 +1,161 @@ +argument_specs: + main: + options: + amq_streams_common_product_version: + default: "3.6.0" + description: "Version of Apache Kafka to download and install" + type: "str" + amq_streams_common_scala_version: + default: 2.13 + description: "Scala version used by Apache Kafka" + type: "str" + amq_streams_common_rhn_product_version: + default: "2.6.0" + description: "TODO document argument" + type: "str" + amq_streams_common_rhn_home_dir: + default: "kafka_2.13-{{ amq_streams_common_product_version }}.redhat-00005" + description: "TODO document argument" + type: "str" + amq_streams_common_rhn_product_path: + default: "/opt" + description: "TODO document argument" + type: "str" + amq_streams_common_redhat_enabled: + default: false + description: "TODO document argument" + type: "bool" + amq_streams_common_rhn_product_category: + default: "jboss.amq.streams" + description: "TODO document argument" + type: "str" + amq_streams_common_scala_version: + default: "2.13" + description: "TODO document argument" + type: "float" + amq_streams_common_version: + default: "{{ amq_streams_common_scala_version }}-{{ amq_streams_common_product_version }}" + description: "Apache Kafka version to install" + type: "str" + amq_streams_common_archive_file: + default: "kafka_{{ amq_streams_common_version }}.tgz" + description: "Apache Kafka download archive name" + type: "str" + amq_streams_common_rhn_product_archive_file_pattern: + default: "^.*/amq-streams-[0-9.]*-bin.zip$" + description: "TODO document argument" + type: "str" + + # line 12 of defaults/main.yml + amq_streams_common_download_url: + default: "https://archive.apache.org/dist/kafka/{{ amq_streams_common_product_version }}/kafka_{{ amq_streams_common_version }}.tgz" + description: "Download URL for Apache Kafka archive" + type: "str" + amq_streams_common_download_dir: + default: "{{ lookup('env','PWD') | default('/opt') }}" + description: "Root directory for downloaded archive of Apache Kafka" + type: "str" + amq_streams_common_archive_extraction_requires_privilege_escalation: + default: true + description: "TODO document argument" + type: "bool" + amq_streams_common_escalade_privilege_user_create: + default: true + description: "TODO document argument" + type: "bool" + amq_streams_common_escalade_privilege_user_group: + default: true + description: "TODO document argument" + type: "bool" + amq_streams_common_escalade_privilege_group_create: + default: true + description: "TODO document argument" + type: "bool" + amq_streams_common_escalade_privilege_config_file: + default: true + description: "TODO document argument" + type: "bool" + amq_streams_common_install_dir: + default: "/opt" + description: "Root director for the Apache Kafka installation" + type: "str" + amq_streams_common_offline_install: + default: false + description: "TODO document argument" + type: "bool" + amq_streams_common_path_to_archive_file: + default: "{{ amq_streams_common_download_dir }}/{{ amq_streams_common_archive_file }}" + description: "TODO document argument" + type: "str" + amq_streams_common_download_node: + default: "localhost" + description: "TODO document argument" + type: "str" + amq_streams_common_systctl_update_enabled: + default: false + description: "TODO document argument" + type: "bool" + amq_streams_common_prereqs_dependencies: + default: "['tar']" + description: "List of system dependencies to instal - not included the required JVM" + type: "list" + amq_streams_common_dependencies_require_priv: + default: true + description: "TODO document argument" + type: "bool" + amq_streams_common_openjdk_version: + default: "17" + description: "Java version - if set, triggers the installation of appropriate openjdk on the target system." + type: "str" + amq_streams_common_home: + default: "{{ amq_streams_common_install_dir }}/kafka_{{ amq_streams_common_version }}/" + description: "Root directory of the installed Apache Kafka on the target" + type: "str" + amq_streams_common_systemd_home: + default: "/usr/lib/systemd/system" + description: "Systemd config files home." + type: "str" + amq_streams_common_systemd_service_config_file_template: + default: "templates/service_systemd.j2" + description: "Template use to create systemd service for Kafka components (Zookeeper, Broker)." + type: "str" + amq_streams_common_home: + default: "{{ amq_streams_common_install_dir }}/kafka_{{ amq_streams_common_version }}/" + description: "TODO document argument" + type: "str" + amq_streams_common_firewalld_package_name: + default: "['firewalld']" + description: "TODO document argument" + type: "list" + amq_streams_common_firewalld_enabled: + default: false + description: "Whether to enable firewall configuration" + type: "bool" + amq_streams_common_prometheus_install_rpm: + default: true + description: "TODO document argument" + type: "bool" + amq_streams_common_prometheus_package_name: + default: "prometheus-jmx-exporter" + description: "TODO document argument" + type: "str" + amq_streams_common_prometheus_path_to_jar: + default: "/usr/share/java/prometheus-jmx-exporter" + description: "TODO document argument" + type: "str" + amq_streams_common_prometheus_jarname: + default: "jmx_prometheus_javaagent.jar" + description: "TODO document argument" + type: "str" + amq_streams_common_prometheus_bind_addr: + default: "0.0.0.0" + description: "TODO document argument" + type: "str" + amq_streams_common_prometheus_port: + default: 18080 + description: "TODO document argument" + type: "int" + amq_streams_common_prometheus_metrics_config_home: + default: "/etc/" + description: "TODO document argument" + type: "str" diff --git a/roles/amq_streams_common/meta/argument_specs.yml b/roles/amq_streams_common/meta/argument_specs.yml index 1c60254..d40bc29 100644 --- a/roles/amq_streams_common/meta/argument_specs.yml +++ b/roles/amq_streams_common/meta/argument_specs.yml @@ -2,13 +2,33 @@ argument_specs: main: options: amq_streams_common_product_version: - default: 3.4.0 + default: "3.6.0" description: "Version of Apache Kafka to download and install" type: "str" amq_streams_common_scala_version: default: 2.13 description: "Scala version used by Apache Kafka" type: "str" + amq_streams_common_rhn_product_version: + default: "2.6.0" + description: "TODO document argument" + type: "str" + amq_streams_common_rhn_home_dir: + default: "kafka_2.13-{{ amq_streams_common_product_version }}.redhat-00005" + description: "TODO document argument" + type: "str" + amq_streams_common_rhn_product_path: + default: "/opt" + description: "TODO document argument" + type: "str" + amq_streams_common_redhat_enabled: + default: false + description: "TODO document argument" + type: "bool" + amq_streams_common_rhn_product_category: + default: "jboss.amq.streams" + description: "TODO document argument" + type: "str" amq_streams_common_version: default: "{{ amq_streams_common_scala_version }}-{{ amq_streams_common_product_version }}" description: "Apache Kafka version to install" @@ -17,23 +37,68 @@ argument_specs: default: "kafka_{{ amq_streams_common_version }}.tgz" description: "Apache Kafka download archive name" type: "str" + amq_streams_common_rhn_product_archive_file_pattern: + default: "^.*/amq-streams-[0-9.]*-bin.zip$" + description: "TODO document argument" + type: "str" + + # line 12 of defaults/main.yml amq_streams_common_download_url: default: "https://archive.apache.org/dist/kafka/{{ amq_streams_common_product_version }}/kafka_{{ amq_streams_common_version }}.tgz" description: "Download URL for Apache Kafka archive" type: "str" amq_streams_common_download_dir: - default: "/opt" + default: "{{ lookup('env','PWD') | default('/opt') }}" description: "Root directory for downloaded archive of Apache Kafka" type: "str" + amq_streams_common_archive_extraction_requires_privilege_escalation: + default: true + description: "TODO document argument" + type: "bool" + amq_streams_common_escalade_privilege_user_create: + default: true + description: "TODO document argument" + type: "bool" + amq_streams_common_escalade_privilege_user_group: + default: true + description: "TODO document argument" + type: "bool" + amq_streams_common_escalade_privilege_group_create: + default: true + description: "TODO document argument" + type: "bool" + amq_streams_common_escalade_privilege_config_file: + default: true + description: "TODO document argument" + type: "bool" amq_streams_common_install_dir: default: "/opt" description: "Root director for the Apache Kafka installation" type: "str" + amq_streams_common_offline_install: + default: false + description: "TODO document argument" + type: "bool" + amq_streams_common_path_to_archive_file: + default: "{{ amq_streams_common_download_dir }}/{{ amq_streams_common_archive_file }}" + description: "TODO document argument" + type: "str" + amq_streams_common_download_node: + default: "localhost" + description: "TODO document argument" + type: "str" + amq_streams_common_systctl_update_enabled: + default: false + description: "TODO document argument" + type: "bool" amq_streams_common_prereqs_dependencies: - default: - - tar + default: "['tar']" description: "List of system dependencies to instal - not included the required JVM" type: "list" + amq_streams_common_dependencies_require_priv: + default: true + description: "TODO document argument" + type: "bool" amq_streams_common_openjdk_version: default: "17" description: "Java version - if set, triggers the installation of appropriate openjdk on the target system." @@ -43,22 +108,46 @@ argument_specs: description: "Root directory of the installed Apache Kafka on the target" type: "str" amq_streams_common_systemd_home: - default: '/usr/lib/systemd/system' + default: "/usr/lib/systemd/system" description: "Systemd config files home." type: "str" amq_streams_common_systemd_service_config_file_template: - default: 'templates/service_systemd.j2' + default: "templates/service_systemd.j2" description: "Template use to create systemd service for Kafka components (Zookeeper, Broker)." type: "str" - amq_streams_common_systctl_update_enabled: - default: false - description: "Whether or not to perform OS tuning using sysctl" - type: "bool" + amq_streams_common_firewalld_package_name: + default: "['firewalld']" + description: "TODO document argument" + type: "list" amq_streams_common_firewalld_enabled: default: false description: "Whether to enable firewall configuration" type: "bool" - amq_streams_common_offline_install: - default: false - description: "Whether to install without downloading resources" + amq_streams_common_prometheus_install_rpm: + default: true + description: "TODO document argument" type: "bool" + amq_streams_common_prometheus_package_name: + default: "prometheus-jmx-exporter" + description: "TODO document argument" + type: "str" + amq_streams_common_prometheus_path_to_jar: + default: "/usr/share/java/prometheus-jmx-exporter" + description: "TODO document argument" + type: "str" + amq_streams_common_prometheus_jarname: + default: "jmx_prometheus_javaagent.jar" + description: "TODO document argument" + type: "str" + amq_streams_common_prometheus_bind_addr: + default: "0.0.0.0" + description: "TODO document argument" + type: "str" + amq_streams_common_prometheus_port: + default: 18080 + description: "TODO document argument" + type: "int" + amq_streams_common_prometheus_metrics_config_home: + default: "/etc/" + description: "TODO document argument" + type: "str" diff --git a/roles/amq_streams_connect/meta/argument_specs.yml b/roles/amq_streams_connect/meta/argument_specs.yml index 8ebbcb6..31297b2 100644 --- a/roles/amq_streams_connect/meta/argument_specs.yml +++ b/roles/amq_streams_connect/meta/argument_specs.yml @@ -15,7 +15,7 @@ argument_specs: # line 4 of defaults/main.yml amq_streams_connect_standalone_conf: - default: "{{ amq_streams_common_home }}/config/connect-standalone.properties" + default: "/etc/amq_streams_connect-standalone.properties" description: "Path to the connect-standalone.properties used by Connect" type: "str" @@ -37,6 +37,12 @@ argument_specs: description: "Path to the connect-file-sink properties file" type: "str" + # line 11 of defaults/main.yml + amq_streams_connect_source_file_require_priv_escalation: + default: true + description: "TODO document argument" + type: "bool" + # line 12 of defaults/main.yml amq_streams_connect_service_name: default: "amq_streams_connect" @@ -91,62 +97,116 @@ argument_specs: description: "Connect Java heap options" type: "str" - # line 22 of defaults/main.yml + # line 21 of defaults/main.yml + amq_streams_connect_sysctl_vm_max_map_count: + default: 65530 + description: "TODO document argument" + type: "int" + + # line 23 of defaults/main.yml amq_streams_connect_bootstrap_servers: default: "localhost:9092" description: "Connect's hostname and port for boostrap" type: "str" - # line 25 of defaults/main.yml + # line 26 of defaults/main.yml amq_streams_connect_broker_auth_enabled: default: false description: "Whether or not authentification between broker and Connect is enabled" type: "bool" - # line 26 of defaults/main.yml + # line 27 of defaults/main.yml amq_streams_connect_broker_auth_scram_enabled: default: false description: "Whether or not broker scram authentification is enabled" type: "bool" - # line 27 of defaults/main.yml + # line 28 of defaults/main.yml + amq_streams_connect_broker_admin_mechanism: + default: "PLAIN" + description: "TODO document argument" + type: "str" + + # line 29 of defaults/main.yml amq_streams_connect_broker_auth_username: default: "broker" description: "Broker's username used for Connect's auth" type: "str" - # line 28 of defaults/main.yml + # line 30 of defaults/main.yml amq_streams_connect_broker_auth_password: default: "PLEASE_CHANGEME_IAMNOTGOOD_FOR_PRODUCTION" description: "Broker's password used for Connect's auth" type: "str" - # line 29 of defaults/main.yml + # line 31 of defaults/main.yml amq_streams_connect_zookeeper_session_timeout_ms: default: 18000 description: "Connect's Zk session time (in milliseconds)" type: "int" - # line 30 of defaults/main.yml + # line 32 of defaults/main.yml amq_streams_connect_server_log_validation_min_size: default: 20 description: "Connect's server log minimal size (for the service to be considered functionnal)" type: "int" - # line 32 of defaults/main.yml + # line 34 of defaults/main.yml amq_streams_connect_config_template: default: "templates/connect-standalone.properties.j2" description: "Relative path to the template used for the Connect's standalone properties file" type: "str" - # line 33 of defaults/main.yml + # line 35 of defaults/main.yml amq_streams_connect_service_config_template: default: "templates/service.conf.j2" description: "Relative path to the template used for the systemd service associated to Connect" type: "str" - # line 34 of defaults/main.yml + # line 36 of defaults/main.yml amq_streams_connect_server_port: default: 8083 description: "Connect's server port" type: "int" + + # line 37 of defaults/main.yml + amq_streams_connect_server_port_delay: + default: 0 + description: "TODO document argument" + type: "int" + + # line 38 of defaults/main.yml + amq_streams_connect_server_port_skip_wait: + default: false + description: "TODO document argument" + type: "bool" + + # line 41 of defaults/main.yml + amq_streams_connect_broker_tls_enabled: + default: false + description: "TODO document argument" + type: "bool" + + # line 42 of defaults/main.yml + amq_streams_connect_broker_tls_truststore_client_dir: + default: "/tmp" + description: "TODO document argument" + type: "str" + + # line 43 of defaults/main.yml + amq_streams_connect_broker_tls_truststore_client: + default: "client.truststore.jks" + description: "TODO document argument" + type: "str" + + # line 44 of defaults/main.yml + amq_streams_connect_broker_tls_truststore_client_location: + default: "/opt" + description: "TODO document argument" + type: "str" + + # line 45 of defaults/main.yml + amq_streams_connect_broker_tls_truststore_client_password: + default: "PLEASE_CHANGEME_IAMNOTGOOD_FOR_PRODUCTION" + description: "TODO document argument" + type: "str" diff --git a/roles/amq_streams_cruise_control/meta/argument_specs.yml b/roles/amq_streams_cruise_control/meta/argument_specs.yml index 5d96744..44a9dfb 100644 --- a/roles/amq_streams_cruise_control/meta/argument_specs.yml +++ b/roles/amq_streams_cruise_control/meta/argument_specs.yml @@ -2,89 +2,163 @@ argument_specs: main: options: # line 2 of defaults/main.yml + amq_streams_cruise_control_enabled: + default: false + description: "TODO document argument" + type: "bool" + + # line 3 of defaults/main.yml amq_streams_cruise_control_home: default: "/opt/cruise-control/" description: "Path to folder where Cruise Control has been installed" type: "str" - # line 3 of defaults/main.yml + # line 4 of defaults/main.yml + amq_streams_cruise_control_rhn_product_archive_file_pattern: + default: "^.*/amq-streams-[0-9.]*-cruise-control-bin.zip" + description: "TODO document argument" + type: "str" + + # line 5 of defaults/main.yml amq_streams_cruise_control_service_name: default: "amq_streams_cruise_control" description: "Name of the systemd service running Cruise Control" type: "str" - # line 4 of defaults/main.yml + # line 6 of defaults/main.yml amq_streams_cruise_control_server_start: default: "{{ amq_streams_cruise_control_home }}/kafka-cruise-control-start.sh" description: "Path to start script for systemd service managing Cruise Control" type: "str" - # line 5 of defaults/main.yml + # line 7 of defaults/main.yml amq_streams_cruise_control_server_stop: default: "{{ amq_streams_cruise_control_home }}/kafka-cruise-control-stop.sh" description: "Path to stop script for systemd service managing Cruise Control" type: "str" - # line 6 of defaults/main.yml + # line 8 of defaults/main.yml + amq_streams_cruise_control_version: + default: "2.6.0" + description: "TODO document argument" + type: "str" + + # line 9 of defaults/main.yml + amq_streams_cruise_control_archive_file: + default: "amq-streams-{{ amq_streams_cruise_control_version }}-cruise-control-bin.zip" + description: "TODO document argument" + type: "str" + + # line 10 of defaults/main.yml amq_streams_cruise_control_server_config: default: "/etc/amq_streams_cruise_control.properties" description: "Path to config file for Cruise Control service" type: "str" - # line 7 of defaults/main.yml + # line 11 of defaults/main.yml amq_streams_cruise_control_config_template: default: "templates/service.conf.j2" description: "Path to template defining the systemd service for Cruise Control" type: "str" - # line 8 of defaults/main.yml + # line 12 of defaults/main.yml amq_streams_cruise_control_config_properties_template: default: "templates/cruisecontrol.properties.j2" description: "Path to template defining the config file for Cruise Control" type: "str" - # line 9 of defaults/main.yml + # line 13 of defaults/main.yml + amq_streams_cruise_control_path_to_log4j_properties: + default: "{{ amq_streams_cruise_control_home }}/config/log4j.properties" + description: "TODO document argument" + type: "str" + + # line 14 of defaults/main.yml + amq_streams_cruise_control_log4j_template: + default: "templates/log4j.properties.j2" + description: "TODO document argument" + type: "str" + + # line 15 of defaults/main.yml + amq_streams_cruise_control_logfilename: + default: "/var/log/cruise-control" + description: "TODO document argument" + type: "str" + + # line 16 of defaults/main.yml + amq_streams_cruise_control_logfiles_requires_priv_escalation: + default: true + description: "TODO document argument" + type: "bool" + + # line 17 of defaults/main.yml + amq_streams_cruise_control_capacity_template: + default: "templates/capacity.json.j2" + description: "TODO document argument" + type: "str" + + # line 18 of defaults/main.yml + amq_streams_cruise_control_path_to_capacity_file: + default: "{{ amq_streams_cruise_control_home }}/config/capacity.json" + description: "TODO document argument" + type: "str" + + # line 19 of defaults/main.yml + amq_streams_cruise_control_path_to_capacity_file_require_priv_escalation: + default: true + description: "TODO document argument" + type: "bool" + + # line 20 of defaults/main.yml amq_streams_cruise_control_user: default: "root" description: "User account running the Cruise Control service" type: "str" - # line 10 of defaults/main.yml + # line 21 of defaults/main.yml amq_streams_cruise_control_group: default: "root" description: "Groupname of the account running the Cruise Control service" type: "str" - # line 11 of defaults/main.yml + # line 22 of defaults/main.yml amq_streams_cruise_control_zk_host: default: "{{ groups['zookeepers'][0] }}" description: "Hostname of the Zookeeper instance used by Cruise Control to communicate with the ensemble" type: "str" - # line 12 of defaults/main.yml + # line 23 of defaults/main.yml amq_streams_cruise_control_broker_host: default: "{{ groups['brokers'][0] }}" description: "Hostname of the Zookeeper instance used by Cruise Control to communicate with the ensemble" type: "str" - # line 14 of defaults/main.yml + # line 24 of defaults/main.yml + amq_streams_cruise_control_replicator_factor: + default: 1 + description: "TODO document argument" + type: "int" + + # line 26 of defaults/main.yml amq_streams_cruise_control_host: default: "localhost" description: "Name of the host system running Cruise Control" type: "str" - # line 15 of defaults/main.yml + # line 27 of defaults/main.yml amq_streams_cruise_control_port: default: 9090 description: "Port used communicate with Cruise Control" type: "int" - # line 16 of defaults/main.yml + # line 28 of defaults/main.yml amq_streams_cruise_control_api_path: default: "kafkacruisecontrol" description: "Context of the HTTP API call to Cruise Control (don't modify unless you know what you are doing)" type: "str" + + # line 30 of defaults/main.yml amq_streams_cruise_control_operation_exec: - default: True + default: true description: "Indicate if the request must be executed or just diplayed (for debugging purpose)" type: "bool" diff --git a/roles/amq_streams_exporter/meta/argument_specs.yml b/roles/amq_streams_exporter/meta/argument_specs.yml index e530789..0bfb3fe 100644 --- a/roles/amq_streams_exporter/meta/argument_specs.yml +++ b/roles/amq_streams_exporter/meta/argument_specs.yml @@ -1,6 +1,12 @@ argument_specs: main: options: + # line 2 of defaults/main.yml + amq_streams_exporter_enabled: + default: true + description: "TODO document argument" + type: "bool" + # line 3 of defaults/main.yml amq_streams_exporter_target_arch: default: "{{ ansible_architecture }}" diff --git a/roles/amq_streams_zookeeper/meta/argument_specs.yml b/roles/amq_streams_zookeeper/meta/argument_specs.yml index 3beb9ca..dd17169 100644 --- a/roles/amq_streams_zookeeper/meta/argument_specs.yml +++ b/roles/amq_streams_zookeeper/meta/argument_specs.yml @@ -50,151 +50,223 @@ argument_specs: type: "str" # line 10 of defaults/main.yml + amq_streams_zookeeper_restart_requires_priv_escalation: + default: true + description: "TODO document argument" + type: "bool" + + # line 11 of defaults/main.yml amq_streams_zookeeper_service_env_file: default: "/etc/zookeeper.conf" description: "Path to the Zk systemd's configuration on the target" type: "str" - # line 11 of defaults/main.yml + # line 12 of defaults/main.yml amq_streams_zookeeper_data_dir: default: "/var/lib/{{ amq_streams_zookeeper_service_name }}/" description: "Path to the datadir used by Zk on the target system" type: "str" - # line 12 of defaults/main.yml + # line 13 of defaults/main.yml amq_streams_zookeeper_logs_dir: default: "/var/log/{{ amq_streams_zookeeper_service_name }}/" description: "Path to the logdir used by Zk on the target system" type: "str" - # line 13 of defaults/main.yml + # line 14 of defaults/main.yml + amq_streams_zookeeper_data_require_priv_escalation: + default: true + description: "TODO document argument" + type: "bool" + + # line 15 of defaults/main.yml amq_streams_zookeeper_max_client_cnxns: default: 0 description: "Number of max client connections for Zk" type: "int" - # line 14 of defaults/main.yml + # line 16 of defaults/main.yml amq_streams_zookeeper_admin_enable_server: default: "true" description: "Whether or not Zk admin server is enabled" type: "str" - # line 15 of defaults/main.yml + # line 17 of defaults/main.yml amq_streams_zookeeper_admin_server_port: default: 8080 description: "Zk admin server port" type: "int" - # line 16 of defaults/main.yml + # line 18 of defaults/main.yml + amq_streams_zookeeper_admin_server_port_delay: + default: 0 + description: "Excepted delay for zk server to become available" + type: "int" + + # line 19 of defaults/main.yml + amq_streams_zookeeper_admin_server_skip_wait: + default: false + description: "Should Ansible skip the wait: after zk service start." + type: "bool" + + # line 20 of defaults/main.yml amq_streams_zookeeper_instance_count_enabled: default: true description: "Whether or not Ansible should count and keep track of the number of Zk instances deployed" type: "bool" - # line 17 of defaults/main.yml - amq_streams_zookeeper_4wl_commands_whitelist: - default: "stat,dump" - description: "Zk 4wl commands whitelist" + # line 21 of defaults/main.yml + amq_streams_zookeeper_inventory_group_name: + default: "zookeepers" + description: "Name used in the inventory for the group referencing all the zk instances." type: "str" - # line 18 of defaults/main.yml + # line 22 of defaults/main.yml amq_streams_zookeeper_instance_count: - default: 0 + default: "{{ groups[amq_streams_zookeeper_inventory_group_name] | length }}" description: "Zk instance count" - type: "int" + type: "str" - # line 19 of defaults/main.yml + # line 23 of defaults/main.yml + amq_streams_zookeeper_4wl_commands_whitelist: + default: "stat,dump" + description: "Zk 4wl commands whitelist" + type: "str" + + # line 24 of defaults/main.yml amq_streams_zookeeper_java_heap_opts: default: "-Xmx512M -Xms512M" description: "Zk Java heap options" type: "str" - # line 21 of defaults/main.yml + # line 25 of defaults/main.yml + amq_streams_zookeeper_sysctl_vm_max_map_count: + default: 65530 + description: "TODO document argument" + type: "int" + + # line 26 of defaults/main.yml + amq_streams_zookeeper_ulimit_max_value: + default: 1024 + description: "TODO document argument" + type: "int" + + # line 28 of defaults/main.yml amq_streams_zookeeper_host: default: "localhost" description: "Zk hostname" type: "str" - # line 22 of defaults/main.yml + # line 29 of defaults/main.yml amq_streams_zookeeper_port: default: 2181 description: "Zk port used" type: "int" - # line 23 of defaults/main.yml + # line 30 of defaults/main.yml amq_streams_zookeeper_init_limit: default: 5 description: "Zk init limit" type: "int" - # line 24 of defaults/main.yml + # line 31 of defaults/main.yml amq_streams_zookeeper_sync_limit: default: 2 description: "Zk sync limit" type: "int" - # line 25 of defaults/main.yml + # line 32 of defaults/main.yml amq_streams_zookeeper_cluster_port_start: default: 2888 description: "Zk cluster port range start" type: "int" - # line 26 of defaults/main.yml + # line 33 of defaults/main.yml amq_streams_zookeeper_cluster_port_end: default: 3888 description: "Zk cluster port range end" type: "int" - # line 28 of defaults/main.yml + # line 35 of defaults/main.yml amq_streams_zookeeper_inventory_group: - default: "{{ groups['zookeepers'] | default('') }}" + default: "{{ groups[amq_streams_zookeeper_inventory_group_name] | default([]) }}" description: "Zk inventory" type: "str" - # line 30 of defaults/main.yml + # line 37 of defaults/main.yml amq_streams_firewalld_package_name: default: "['firewalld']" description: "Packages required to install Firewalld" type: "list" - # line 32 of defaults/main.yml + # line 39 of defaults/main.yml amq_streams_firewalld_enabled: default: false description: "Whether or not Ansible should install and managed Firewalld for Zk" type: "bool" - # line 35 of defaults/main.yml + # line 42 of defaults/main.yml amq_streams_zookeeper_auth_enabled: - default: "false" + default: false description: "Whether or not authenfication for Zk is enabled" - type: "str" + type: "bool" - # line 36 of defaults/main.yml + # line 43 of defaults/main.yml amq_streams_zookeeper_auth_config: default: "/etc/zookeeper-jaas.conf" description: "Path to the Zk JAAS conf file on the target system" type: "str" - # line 37 of defaults/main.yml + # line 44 of defaults/main.yml amq_streams_zookeeper_auth_config_template: default: "templates/zookeeper-jaas.conf.j2" description: "Relative path to the template used to generate the JAAS config" type: "str" - # line 38 of defaults/main.yml + # line 45 of defaults/main.yml amq_streams_zookeeper_auth_user: default: "zookeeper" description: "Zk username used for authentification" type: "str" - # line 39 of defaults/main.yml + # line 46 of defaults/main.yml amq_streams_zookeeper_auth_pass: default: "PLEASE_CHANGE_ME_I_AM_NO_GOOD_FOR_PRODUCTION" description: "Zk password used for authentification" type: "str" - # line 41 of defaults/main.yml + # line 48 of defaults/main.yml amq_streams_zookeeper_server_log_validation_min_size: default: 20 description: "Zk server log minimal size (to be considered functional)" type: "int" + + # line 50 of defaults/main.yml + amq_streams_zookeeper_prometheus_enabled: + default: false + description: "TODO document argument" + type: "bool" + + # line 51 of defaults/main.yml + amq_streams_zookeeper_prometheus_port: + default: 18080 + description: "TODO document argument" + type: "int" + + # line 52 of defaults/main.yml + amq_streams_zookeeper_prometheus_bind_addr: + default: "0.0.0.0" + description: "TODO document argument" + type: "str" + + # line 53 of defaults/main.yml + amq_streams_zookeeper_prometheus_config_file: + default: "zk-config.yaml" + description: "TODO document argument" + type: "str" + + # line 54 of defaults/main.yml + amq_streams_zookeeper_prometheus_config_file_template: + default: "prometheus/zk-config.yaml.j2" + description: "TODO document argument" + type: "str"