User Tools

Site Tools


сервис_ansible

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
сервис_ansible [2022/08/15 17:09]
val [Роль OpenVPN сервера]
сервис_ansible [2022/12/02 11:58]
val [Пример 3]
Line 1: Line 1:
 ====== Сервис Ansible ====== ====== Сервис Ansible ======
 +
 +  * Управление инфраструктурой на примере [[https://​ru.wikipedia.org/​wiki/​Ansible|Аnsible - wikipedia]]
  
   * [[https://​habrahabr.ru/​company/​express42/​blog/​254959/​|Ansible — давайте попробуем]]   * [[https://​habrahabr.ru/​company/​express42/​blog/​254959/​|Ansible — давайте попробуем]]
-  * [[https://​habrahabr.ru/​post/​195048/​|Ansible]] 
   * [[https://​habrahabr.ru/​post/​305400/​|Пособие по Ansible]]   * [[https://​habrahabr.ru/​post/​305400/​|Пособие по Ansible]]
  
Line 105: Line 106:
 node1# ansible corpX -m command -a 'uname -a' node1# ansible corpX -m command -a 'uname -a'
 node1# ansible corpX -a 'uname -a' node1# ansible corpX -a 'uname -a'
 +
  
 node1# ansible corpX -f 2 -m apt -a '​pkg=apache2 state=present update_cache=true'​ node1# ansible corpX -f 2 -m apt -a '​pkg=apache2 state=present update_cache=true'​
  
 node1# ansible addnodes -vv -f 5 -m apt -a '​pkg=ceph,​tgt-rbd state=present update_cache=true'​ node1# ansible addnodes -vv -f 5 -m apt -a '​pkg=ceph,​tgt-rbd state=present update_cache=true'​
 +
 +server# ansible nodes -f 3 -m apt -a '​pkg=openvpn state=present update_cache=true'​
 +server# ansible nodes -f 3 -m apt -a '​pkg=docker.io state=absent update_cache=true'​
 +
  
 ubuntu20# apt install python3-paramiko ubuntu20# apt install python3-paramiko
Line 124: Line 130:
  
 ==== Пример 1 ==== ==== Пример 1 ====
 +
 +  * [[Технология Docker]]
 +
 <​code>​ <​code>​
-# cat provision_docker.yml+server# cat provision_docker.yml
  
   или   или
  
-λ npp provision_docker.yml ​&+λ touch provision_docker.yml
 </​code><​code>​ </​code><​code>​
 - hosts: "{{ variable_host | default('​all'​) }}" - hosts: "{{ variable_host | default('​all'​) }}"
Line 164: Line 173:
         state: present ​         state: present ​
         update_cache:​ true         update_cache:​ true
-</​code><​code>​ +</​code>​ 
-gate# ansible-playbook provision_docker.yml+ 
 +  * Технология Vagrant: [[Технология Vagrant#​Provision с использованием ansible]] 
 + 
 +<​code>​ 
 +server# ansible-playbook provision_docker.yml
  
-gate# ansible-playbook provision_docker.yml -i inv_file.ini+server# ansible-playbook provision_docker.yml --extra-vars "​variable_host=nodes"​
  
-gate# ansible-playbook provision_docker.yml -"ansible_python_interpreter=/​usr/​bin/​python3" ​-i 192.168.X.1:​2222,​+server# ansible-playbook provision_docker.yml --extra-vars ​"variable_host=localhost"
  
-gate# ansible-playbook provision_docker.yml --extra-vars "​variable_host=corp"​+server# ansible-playbook provision_docker.yml -i inv_file.ini
  
-gate# ansible-playbook provision_docker.yml --extra-vars ​"variable_host=localhost"+server# ansible-playbook provision_docker.yml -"ansible_python_interpreter=/​usr/​bin/​python3" ​-i 192.168.X.1:​2222,​
 </​code>​ </​code>​
 ==== Пример 2 ==== ==== Пример 2 ====
Line 216: Line 229:
       ios_config:       ios_config:
         lines:         lines:
 +          - snmp-server community write RW
 +        ​
           - ip host server 192.168.X.10           - ip host server 192.168.X.10
  
           - snmp-server host server writetrap           - snmp-server host server writetrap
-          - snmp-server community write RW 
  
 #          - snmp-server enable traps config #          - snmp-server enable traps config
Line 239: Line 253:
 #          - enable secret cisco #          - enable secret cisco
 #          - aaa authorization console #          - aaa authorization console
 +
 #          - aaa authentication login default local #          - aaa authentication login default local
 #          - aaa authorization exec default local #          - aaa authorization exec default local
Line 363: Line 378:
  
   * [[https://​rtfm.co.ua/​ansible-roli-roles-primer/​|Ansible:​ роли (roles) – пример]]   * [[https://​rtfm.co.ua/​ansible-roli-roles-primer/​|Ansible:​ роли (roles) – пример]]
 +  * [[https://​andreyex.ru/​linux/​ansible-roli-v-ansible/​|Ansible. Роли в Ansible]]
   * [[Настройка стендов слушателей#​Ansible конфигурация]]   * [[Настройка стендов слушателей#​Ansible конфигурация]]
  
Line 448: Line 464:
 ==== Роль OpenVPN сервера ==== ==== Роль OpenVPN сервера ====
 <​code>​ <​code>​
 +server:~# wget https://​val.bmstu.ru/​unix/​conf.git/​conf/​ansible/​roles/​openvpn1.tgz && tar -xvzf openvpn1.tgz
 +
 +  ИЛИ
 +
 server:~# mkdir openvpn1 && cd openvpn1 server:~# mkdir openvpn1 && cd openvpn1
  
Line 456: Line 476:
 server:​~/​openvpn1/​openvpn1/​files#​ server:​~/​openvpn1/​openvpn1/​files#​
 </​code>​ </​code>​
-  * В текущем каталоге выполняем и сохраняем файлы из тем [[Пакет OpenSSL#​Создание параметра DH]] и [[Пакет OpenSSL#​Создание самоподписанного сертификата]] (не указываем AltName ​и Common Name)+  * В текущем каталоге выполняем и сохраняем файлы из тем [[Пакет OpenSSL#​Создание параметра DH]] и [[Пакет OpenSSL#​Создание самоподписанного сертификата]] (не указываем AltNameCommon Name: server - достаточно)
 <​code>​ <​code>​
 server:​~/​openvpn1/​openvpn1/​files#​ ls server:​~/​openvpn1/​openvpn1/​files#​ ls
Line 462: Line 482:
 dh2048.pem ​ server.crt ​ server.key dh2048.pem ​ server.crt ​ server.key
 </​code><​code>​ </​code><​code>​
-server:​~/​openvpn1/​openvpn1/​files#​ cd -+server:​~/​openvpn1/​openvpn1/​files#​ cd ../../
  
 server:​~/​openvpn1#​ cat openvpn1/​templates/​openvpn1.conf.j2 server:​~/​openvpn1#​ cat openvpn1/​templates/​openvpn1.conf.j2
Line 471: Line 491:
 server {{node_nets[ansible_hostname]}} 255.255.255.0 server {{node_nets[ansible_hostname]}} 255.255.255.0
  
-push "route 192.168.X.0 255.255.255.0"​ +push "route 192.168.{{X}}.0 255.255.255.0"​ 
-status /​var/​log/​openvpn1-status.log+#push "dhcp-option DNS 192.168.{{X}}.10"​ 
 +#push "​block-outside-dns"​ 
 dh /​etc/​openvpn/​dh2048.pem dh /​etc/​openvpn/​dh2048.pem
 key /​etc/​ssl/​private/​server.key key /​etc/​ssl/​private/​server.key
 ca /​etc/​ssl/​certs/​server.crt ca /​etc/​ssl/​certs/​server.crt
 cert /​etc/​ssl/​certs/​server.crt cert /​etc/​ssl/​certs/​server.crt
-plugin /​usr/​lib/​x86_64-linux-gnu/​openvpn/​plugins/​openvpn-plugin-auth-pam.so login+
 verify-client-cert none verify-client-cert none
 +plugin /​usr/​lib/​x86_64-linux-gnu/​openvpn/​plugins/​openvpn-plugin-auth-pam.so login
 username-as-common-name username-as-common-name
 +#​duplicate-cn
 +
 +status /​var/​log/​openvpn1-status.log
  
 management 0.0.0.0 7505 management 0.0.0.0 7505
Line 529: Line 555:
 all: all:
   vars:   vars:
 +    X: "{{ ansible_eth1.ipv4.address.split('​.'​)[2] }}"
     ansible_python_interpreter:​ "/​usr/​bin/​python3"​     ansible_python_interpreter:​ "/​usr/​bin/​python3"​
     ansible_ssh_user:​ vagrant     ansible_ssh_user:​ vagrant
Line 561: Line 588:
 server:​~/​openvpn1#​ ansible-playbook openvpn1.yaml -i inventory.yaml -e "​variable_host=all"​ server:​~/​openvpn1#​ ansible-playbook openvpn1.yaml -i inventory.yaml -e "​variable_host=all"​
 </​code>​ </​code>​
 +
 +  * [[Сервисы Gateway и routing#​Управление таблицей маршрутизации]]
  
 ==== Фрагмент роли с условиями и отладкой ==== ==== Фрагмент роли с условиями и отладкой ====
сервис_ansible.txt · Last modified: 2024/03/25 10:43 by val