Ansible create topics/ add permission
Чтобы начать использовать Ansible для управления серверной инфраструктурой, необходимо предварительно установить программное обеспечение Ansible на компьютер, который будет выступать в качестве узла управления Ansible. Мы будем использовать репозитории Ubuntu по умолчанию.Сначала обновите индекс пакетов системы с помощью следующей команды:
sudo apt update
После этого обновления вы можете установить программное обеспечение Ansible следующим образом:
sudo apt install ansible
Нажмите Y при запросе для подтверждения установки.
Теперь на узле управления Ansible есть все программное обеспечение, необходимое для администрирования хостов. Теперь мы рассмотрим настройку файла инвентаризации, чтобы Ansible мог взаимодействовать с вашими управляемыми узлами
Файл инвентаризации содержит информацию о хостах, которыми вы будете управлять с помощью Ansible. Вы можете включить в файл инвентаризации от одного до нескольких сотен серверов и распределить хосты по группам и подгруппам. Файл инвентаризации также часто задает переменные, действующие только для определенных хостов или групп, чтобы их можно было использовать с плейбуками и шаблонами. Некоторые переменные также влияют на способ запуска плейбука, и в их число входит переменная ansible_python_interpreter, которую мы сейчас увидим.Чтобы изменить заданное по умолчанию содержание файла инвентаризации Ansible, откройте файл /etc/ansible/hosts в предпочитаемом редакторе на узле управления Ansible
Выберите любой удобный для Вас редактор:
sudo nano /etc/ansible/hosts
sudo vim /etc/ansible/hosts
Измените файл инвентаризации:
[os5331] os5331 ansible_host=os-5331 ansible_phyton_interpreter=/usr/bin/phyton3 ansible_user=ppetlin ansible_ssh_private_key_file=/home/ppetlin/openssh ansible_become_user=kafka [os5155] os5155 ansible_host=os-5155 ansible_phyton_interpreter=/usr/bin/phyton3 ansible_user=ppetlin ansible_ssh_private_key_file=/home/ppetlin/openssh ansible_become_user=kafka [os5332] os5332 ansible_host=os-5332 ansible_phyton_interpreter=/usr/bin/phyton3 ansible_user=ppetlin ansible_ssh_private_key_file=/home/ppetlin/openssh ansible_become_user=kafka [os5333] os5333 ansible_host=os-5333 ansible_phyton_interpreter=/usr/bin/phyton3 ansible_user=ppetlin ansible_ssh_private_key_file=/home/ppetlin/openssh ansible_become_user=kafka [os5334] os5334 ansible_host=os-5334 ansible_phyton_interpreter=/usr/bin/phyton3 ansible_user=ppetlin ansible_ssh_private_key_file=/home/ppetlin/openssh ansible_become_user=kafka [os5328] os5328 ansible_host=os-5328 ansible_phyton_interpreter=/usr/bin/phyton3 ansible_user=ppetlin ansible_ssh_private_key_file=/home/ppetlin/openssh ansible_become_user=kafka [os5329] os5329 ansible_host=os-5329 ansible_phyton_interpreter=/usr/bin/phyton3 ansible_user=ppetlin ansible_ssh_private_key_file=/home/ppetlin/openssh ansible_become_user=kafka [os5330] os5330 ansible_host=os-5330 ansible_phyton_interpreter=/usr/bin/phyton3 ansible_user=ppetlin ansible_ssh_private_key_file=/home/ppetlin/openssh ansible_become_user=kafka
os5331 - доменное имя машины по которому мы будем обращаться к ней
ansible_host=os-5331 - коннект по доменному имени, от Вашей машины
ansible_phyton_interpreter=/usr/bin/phyton3 - интерпретатор phyton, который будет включен на всех указанных хостах
ansible_ssh_private_key_file=/home/ppetlin/openssh - путь к open-ssh-key
ansible_become_user=kafka - user под которым будет заходить на хост
Если вы захотите проверить файл инвентаризации, вы можете запустить команду:
Playbook в Ansible определяет серию некоторых действий для выполнения и адресованы определенным наборам серверов. В отличие от некоторых других инструментов для выполнения настроек, Playbook не описывает состояние машины, а Ansible самостоятельно определяет все изменения, которые необходимо внести. Тем не менее, плейбуки должны быть разработаны как идемпотенты, а это значит, что они могут запускаться более одного раза без негативных последствий.Часто плейбуки используют для выполнения начальной настройки серверов - добавления пользователей и каталогов, управлением пакетами программного обеспечения и файлами.Playbook - это YAML-файл.
Для нашего стека хостов, состоящих из тестовой среды и нагрузочной, необходимо два playbook'a.
Чтобы создать playbook, вы должны находится в директории /etc/ansible/. Playbook создается путем выполнения следующей команды:
Можете использовать любой удобный для Вас редактор
Один назовем просто playbook.yml , а второй playbookload.yml
Разница будет в переменных и в хостах ( точках подключения ).Для нашей конкретной работы используются два Playbook'a :
Playbook для тестовой среды
--- - hosts: os5331 gather_facts: yes become: yes tasks: - name: whoami shell: whoami; pwd - name: create topics ignore_errors: yes shell: > cd /opt/hcfb/kafka/kafka; ./bin/kafka-topics.sh \ --create --topic {{ topicname }}-{{ item }} \ --partitions 3 \ --replication-factor 3 \ --config retention.ms={{ retention }} \ --config min.insync.replicas=2 \ --bootstrap-server os-5331:9095 \ --command-config ./config/consumer.properties with_items: - "{{ postfixtest }}" tags: - write - read - name: write topics shell: > cd /opt/hcfb/kafka/kafka; bin/kafka-acls.sh \ --bootstrap-server os-5331:9095 \ --add \ --allow-principal 'User:{{ user }}' \ --producer \ --topic {{ topicname }}-{{ item }} \ --command-config config/consumer.properties with_items: - "{{ postfixtest }}" tags: - write - writeonly - name: permission READ shell: > cd /opt/hcfb/kafka/kafka; bin/kafka-acls.sh \ --bootstrap-server os-5331:9095 \ --add \ --allow-principal 'User:{{ user }}' \ --operation Read \ --operation Describe \ --group '{{ item }}' \ --topic '{{ topicname }}-{{ item }}' \ --command-config config/consumer.properties with_items: - "{{ group }}" - "{{ postfixtest }}" tags: - read - readonly
Playbook для нагрузочной среды
--- - hosts: os5155 gather_facts: yes become: yes tasks: - name: whoami shell: whoami; pwd - name: create topics ignore_errors: yes shell: > cd /opt/hcfb/kafka/kafka; ./bin/kafka-topics.sh \ --create --topic {{ topicname }}-{{ item }} \ --partitions 3 \ --replication-factor 3 \ --config retention.ms={{ retention }} \ --config min.insync.replicas=2 \ --bootstrap-server os-5155:9095 \ --command-config ./config/consumer.properties with_items: - "{{ postfixload }}" tags: - write - read - name: write topics shell: > cd /opt/hcfb/kafka/kafka; bin/kafka-acls.sh \ --bootstrap-server os-5155:9095 \ --add \ --allow-principal 'User:{{ user }}' \ --producer \ --topic {{ topicname }}-{{ item }} \ --command-config config/consumer.properties with_items: - "{{ postfixload }}" tags: - write - writeonly - name: permission READ shell: > cd /opt/hcfb/kafka/kafka; bin/kafka-acls.sh \ --bootstrap-server os-5155:9095 \ --add \ --allow-principal 'User:{{ user }}' \ --operation Read \ --operation Describe \ --group '{{ item }}' \ --topic '{{ topicname }}-{{ item }}' \ --command-config config/consumer.properties with_items: - "{{ group }}" - "{{ postfixload }}" tags: - read - readonly
Находясь в директории /etc/ansible, необходимо создать файл параметров.
Выполните следующую команду, используйте любой удобный для Вас редактор:
vim params
nano params
В этом файле можно описывать любые переменные, и даже делать массив из этих переменных, который указывается с Playbook.
Наш файл с переменными выглядит вот так:
topicname: intellinx-queuing-updateStopList postfixtest: - ft - dev - rtm - ftm - fp - fsc - rt - rp - fsc postfixload: - load1 - load2 group: - myСredit_consumer1_group - myСredit_consumer2_group - myСredit_consumer3_group - myСredit_consumer4_group user: my_credit retention: 172800000 new_version: 2.13-3.2.1 old_version: 2.13-3.0.0 xmx_old: 1 xms_old: 1 xmx_new: 3 xms_new: 3 path: /opt/hcfb/kafka
topicname - имя топика
postfixtest - массив из постфиксов, которые будут использоваться на test
postfixload - массив из постфиксов, которые будут использоваться на load
group - consumer-group для чтения топика
user - учетная запись системы system-auth
retention - время хранения сообщения
Чтобы запустить плейбук на конкретные задачи описанные в нем, необходимо ввести данную команду:
Плейбук для тестовой среды:
ansible-playbook -i hosts playbook.yml --extra-vars "@./params" --tags "read" -vv
Плейбук для нагрузочной среды:
ansible-playbook -i hosts playbookload.yml --extra-vars "@./params" --tags "read" -vv
-i hosts - указываем на файл инвентаризации
playbook.yml - указываем на сам файл playbook'a
--extra-vars "@./params" - используем команду на использование переменных из файла params
В playbook'е используются теги, они служат для того, чтобы разделять задачи. В данной команде мы используем тег: read, который мы указали в playbook.