Инструменты пользователя

Инструменты сайта


сервис_ansible

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
сервис_ansible [2019/11/28 15:07]
val [Использование шаблонов]
сервис_ansible [2020/06/18 15:15] (текущий)
val
Строка 4: Строка 4:
   * [[https://​habrahabr.ru/​post/​195048/​|Ansible]]   * [[https://​habrahabr.ru/​post/​195048/​|Ansible]]
   * [[https://​habrahabr.ru/​post/​305400/​|Пособие по Ansible]]   * [[https://​habrahabr.ru/​post/​305400/​|Пособие по Ansible]]
 +
 +  * [[https://​www.cisco.com/​c/​dam/​m/​ru_ru/​training-events/​2019/​cisco-connect/​pdf/​introduction_automation_with_ansible_idrey.pdf|Введение в автоматизацию с помощью Ansible (Cisco)]]
 +
   * [[https://​www.opennet.ru/​base/​dev/​yaml.txt.html|Знакомимся с YAML (yaml config lib perl python ruby)]]   * [[https://​www.opennet.ru/​base/​dev/​yaml.txt.html|Знакомимся с YAML (yaml config lib perl python ruby)]]
   * [[https://​www.jeffgeerling.com/​blog/​yaml-best-practices-ansible-playbooks-tasks|YAML best practices for Ansible playbooks - tasks]]   * [[https://​www.jeffgeerling.com/​blog/​yaml-best-practices-ansible-playbooks-tasks|YAML best practices for Ansible playbooks - tasks]]
   * [[https://​stackoverflow.com/​questions/​50788277/​why-3-dashes-hyphen-in-yaml-file|why — (3 dashes/​hyphen) in yaml file?]]   * [[https://​stackoverflow.com/​questions/​50788277/​why-3-dashes-hyphen-in-yaml-file|why — (3 dashes/​hyphen) in yaml file?]]
-===== Установка на управляющем ​узле =====+===== Установка на управляющей системе =====
 <​code>​ <​code>​
 node1# apt install ansible node1# apt install ansible
 </​code>​ </​code>​
  
-===== Установка на управляемых ​узлах ====+===== Установка на управляемых ​системах ====
  
 <​code>​ <​code>​
-node2# apt install python python-apt+nodeN# apt install python python-apt
 </​code>​ </​code>​
  
  
-===== Настройка ​списков ​управляемых ​машин ===== +===== Настройка ​групп управляемых систем =====
- +
-  * [[Сервис SSH#​Аутентификация ​с использованием ключей ssh]] +
-  * [[Сервис SSH#​Парольная аутентификация]] в ssh +
- +
-  * Для автоматизации подключения к новым системам может потребоваться отключение проверки их публичного ключа +
- +
-<​code>​ +
-# cat /​etc/​ansible/​ansible.cfg +
-</​code><​code>​ +
-... +
-host_key_checking ​False +
-... +
-</​code>​+
  
   * Определение групп управляемых систем ​   * Определение групп управляемых систем ​
Строка 45: Строка 35:
 [corpX] [corpX]
 node[1:2] node[1:2]
 +
 +[addnodes]
 +192.168.16.3
 +192.168.16.4
  
 [sws] [sws]
 switch[1:3] ansible_ssh_user=root ansible_ssh_pass=cisco switch[1:3] ansible_ssh_user=root ansible_ssh_pass=cisco
 +</​code>​
 +
 +===== Настройка транспорта ssh =====
 +
 +  * Для автоматизации подключения к новым системам может потребоваться отключение проверки их публичного ключа и [[Сервис SSH#​Парольная аутентификация]] в ssh
 +
 +<​code>​
 +# cat /​etc/​ansible/​ansible.cfg
 </​code><​code>​ </​code><​code>​
 +...
 +host_key_checking = False
 +...
 +</​code>​
 +
 +  * [[Сервис SSH#​Аутентификация с использованием ключей ssh]] (!!! не забыть подключение ansible узла к себе !!!)
 +
 +<​code>​
 node1# ssh-keygen node1# ssh-keygen
  
 node1# ssh-copy-id node1 node1# ssh-copy-id node1
 node1# ssh-copy-id node2 node1# ssh-copy-id node2
- 
-node1# ansible corpX -m ping 
-node1# ansible all -m ping 
 </​code>​ </​code>​
 +
 ===== Использование модулей ===== ===== Использование модулей =====
  
 <​code>​ <​code>​
 +node1# ansible corpX -m ping
 +node1# ansible all -m ping
 +
 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'
Строка 71: Строка 82:
  
   * [[Управление учетными записями в Linux#​Назначение пароля]]   * [[Управление учетными записями в Linux#​Назначение пароля]]
 +  * [[https://​docs.ansible.com/​ansible/​2.5/​modules/​user_module.html|Ansible module user - Manage user accounts]]
 +  * [[https://​coderlessons.com/​tutorials/​raznoe/​vyuchi-yaml/​uchebnik-po-yaml|Учебник по YAML]]
  
 <​code>​ <​code>​
Строка 92: Строка 105:
         comment: "​Petrov Petr Petrov,​RA7,​402,​499-239-45-24"​         comment: "​Petrov Petr Petrov,​RA7,​402,​499-239-45-24"​
         password: $6$x/​AU/​p9Dgi/​ZiNF$6Xb8J4fsGuTi5IR0LaZe5pSgRX8vp54sfQGWJZZwKX.KFVpUL9m2PJNDh/​d/​l0rocueIvVjdQTzEAYPMmTm991         password: $6$x/​AU/​p9Dgi/​ZiNF$6Xb8J4fsGuTi5IR0LaZe5pSgRX8vp54sfQGWJZZwKX.KFVpUL9m2PJNDh/​d/​l0rocueIvVjdQTzEAYPMmTm991
 +
 +
 </​code><​code>​ </​code><​code>​
 node1# ansible-playbook addusers.yml node1# ansible-playbook addusers.yml
Строка 112: Строка 127:
 </​code>​ </​code>​
 ===== Использование шаблонов ===== ===== Использование шаблонов =====
 +
 +  * [[https://​ru.wikipedia.org/​wiki/​%D0%98%D0%B4%D0%B5%D0%BC%D0%BF%D0%BE%D1%82%D0%B5%D0%BD%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C|Идемпотентность]]
 +  * [[https://​cryptic-cliffs-32040.herokuapp.com/​|How can I test jinja2 templates in ansible?]]
  
 <​code>​ <​code>​
Строка 139: Строка 157:
 </​code><​code>​ </​code><​code>​
 node1# ansible-playbook inst_apache.yml node1# ansible-playbook inst_apache.yml
-</​code>​+</​code>​<​code>​ 
 +# cat iax.conf.j2 
 +</​code><​code>​ 
 +[general] 
 +disallow=all 
 +allow=alaw
  
 +{% for Y in YS %}
 +[corp{{Y}}]
 +type=user
 +host=dynamic
 +secret=apassword{{Y}}
 +auth=md5
 +
 +[corp{{Y}}]
 +type=peer
 +host=server.corp{{Y}}.un
 +username=corp{{X}}
 +secret=apassword{{X}}
 +auth=md5
 +
 +{% endfor %}
 +</​code><​code>​
 +# cat ast_iax_corps.yml
 +</​code><​code>​
 +- hosts: corp
 +  tasks:
 +    - name: Create iax.conf file
 +      template: src=iax.conf.j2 dest=/​etc/​asterisk/​iax.conf
 +
 +    - name: Reload asterisk confs
 +      service: name=asterisk state=reloaded
 +</​code><​code>​
 +# ansible-playbook ast_iax_corps.yml --extra-vars '​{"​X":"​{{ ansible_eth0.ipv4.address.split(\"​.\"​)[3] }}","​YS":​[1,​2,​3,​4,​5,​6,​7,​8,​9,​10,​11,​12,​13]}'​
 +</​code>​
 ===== Использование handlers ===== ===== Использование handlers =====
  
Строка 149: Строка 200:
   tasks:   tasks:
     - name: Add userdir to apache     - name: Add userdir to apache
-      ​commanda2enmod ​userdir+      ​apache2_module:​ 
 +        state: present 
 +#        state: absent 
 +        name: userdir
       notify:       notify:
         - restart apache         - restart apache
Строка 163: Строка 217:
  
   * [[https://​rtfm.co.ua/​ansible-roli-roles-primer/​|Ansible:​ роли (roles) – пример]]   * [[https://​rtfm.co.ua/​ansible-roli-roles-primer/​|Ansible:​ роли (roles) – пример]]
 +  * [[Настройка стендов слушателей#​Ansible конфигурация]]
  
 <​code>​ <​code>​
-server.isp.un:​~/​ansible/​roles# cat host.yml+# cat host.yml
 </​code><​code>​ </​code><​code>​
 - name: Network config for hosts - name: Network config for hosts
-  hosts: ​corp +  hosts: ​addnodes
-  strategy: free+
   roles:   roles:
     - host     - host
 </​code><​code>​ </​code><​code>​
-server.isp.un:~/ansible/roles# cat host/​tasks/​main.yml+# cat host/​vars/​main.yml 
 +</​code><​code>​ 
 +name_prefix:​ node 
 +X: "{{ ansible_eth0.ipv4.address.split('​.'​)[2] }}" 
 +N"{{ ansible_eth0.ipv4.address.split('​.'​)[3] }}" 
 +</code><​code>​ 
 +# cat host/​tasks/​main.yml
 </​code><​code>​ </​code><​code>​
 - name: Create hosts file - name: Create hosts file
Строка 187: Строка 247:
   template: src=interfaces.j2 dest=/​etc/​network/​interfaces   template: src=interfaces.j2 dest=/​etc/​network/​interfaces
  
-#- name: Restart system +- name: Restart system 
- ​command:​ shutdown -r +1+  command: shutdown -r +1
 </​code><​code>​ </​code><​code>​
-server.isp.un:​~/​ansible/​roles# cat host/vars/main.yml+# cat host/templates/hostname.j2
 </​code><​code>​ </​code><​code>​
-hostname: server +{{ name_prefix ​}}{{ N }}.corp{{ X }}.un
-#hostname: mail +
-base_domain_prefix:​ corp +
-base_domain_suffix:​ un +
-base_net: 172.16.1 +
-gateway_octet:​ 254 +
-dns_ip: 172.16.1.254 +
-X: "{{ ansible_eth0.ipv4.address.split('​.'​)[3] ​}}+
-#X: "{{ ansible_eth0.ipv4.address.split('​.'​)[3] | int - 100 }}"+
 </​code><​code>​ </​code><​code>​
-server.isp.un:​~/​ansible/​roles# cat host/​templates/​hosts.j2+# cat host/​templates/​hosts.j2
 </​code><​code>​ </​code><​code>​
 127.0.0.1 localhost 127.0.0.1 localhost
  
-{{ ansible_eth0.ipv4.address }} {{ hostname ​}}.{{ base_domain_prefix ​}}{{ X }}.{{ base_domain_suffix ​}} {{ hostname ​}} +{{ ansible_eth0.ipv4.address }} {{ name_prefix ​}}{{ }}.corp{{ X }}.un {{ name_prefix ​}}{{ }}
- +
-{{ base_net }}.254 rep+
 </​code><​code>​ </​code><​code>​
-server.isp.un:​~/​ansible/​roles# cat host/​templates/​resolv.conf.j2+# cat host/​templates/​resolv.conf.j2
 </​code><​code>​ </​code><​code>​
-search ​{{ base_domain_prefix }}{{ X }}.{{ base_domain_suffix ​}} +search ​corp{{ X }}.un 
-nameserver {{ dns_ip ​}}+nameserver 192.168.{{ }}.1 
 +nameserver ​192.168.{{ }}.2
 </​code><​code>​ </​code><​code>​
-server.isp.un:​~/​ansible/​roles#​ cat host/​templates/​hostname.j2 +# cat host/​templates/​interfaces.j2
-</​code><​code>​ +
-{{ hostname }}.{{ base_domain_prefix }}{{ X }}.{{ base_domain_suffix }} +
-</​code><​code>​ +
-server.isp.un:​~/​ansible/​roles# cat host/​templates/​interfaces.j2+
 </​code><​code>​ </​code><​code>​
 auto lo auto lo
Строка 228: Строка 275:
         address {{ ansible_eth0.ipv4.address }}         address {{ ansible_eth0.ipv4.address }}
         netmask 255.255.255.0         netmask 255.255.255.0
-        gateway {{ base_net ​}}.{{ gateway_octet }}+        gateway ​192.168.{{ }}.254
 </​code><​code>​ </​code><​code>​
-root@server:​~/​ansible/​roles# ansible-playbook ​host.yml +# ansible-playbook host.yml
- +
-или +
- +
-root@server:​~#​ ansible-playbook ansible/​roles/​host.yml+
 </​code>​ </​code>​
сервис_ansible.1574942853.txt.gz · Последние изменения: 2019/11/28 15:07 — val