Книга: Простой учебник программирования

Простой учебник программирования

Книга: Простой учебник программирования. Книга написана необычным для многих — живым, простым и емким языком. Автор не любит длинных описаний программ,поэтому прерывается на пояснения, что делает книгу удобной для понимания и легкой в усвоении материала.

Чтение учебника не утомляет, а наоборот, — захватывает. Это лучший учебник программирования, по крайней мере, из всех доступных на русском языке. Проработав книгу от начала и до конца, читатель получит ясное понимание — что это такое, программирование. Выбранный в дальнейшем конкретный язык программирования неважен, важны принципы.

В первую очередь это книга для тех, кто, являясь профессионалом в своей области, хочет овладеть программированием или, по крайней мере, научиться разговаривать с программистами на равных.

Скачать с mail облака

2021-09-04T09:20:50Книги и Курсы

🐍 Получение всех IP-адресов из подсети CIDR с помощью Python3

Я искал метод получения всех IP-адресов из подсети CIDR в Python3 и был приятно удивлен, когда заметил, что в Python3 есть встроенная библиотека, которая сделает это за вас.

Библиотека Python3 ‘ipaddress’ встроена в Python3 и работает отлично.

Вы можете “импортировать ipaddress” прямо в ваш код Python и использовать его дальше в вашем приложении.

Как это работает

Допустим, у нас есть CIDR, и мы хотим получить все IP-адреса из этого CIDR.

В своем коде я использовал фрагмент кода, который предоставляет список найденных IP-адресов.

import ipaddress

cidrx = '185.117.73.0/24'

set1 = ipaddress.ip_network(cidrx)

ip_list=[str(ip) for ip in set1]

for ipv4 in ip_list:

    print(ipv4)

IP-адреса вычисляются приведенным выше кодом Python, затем вычисленные IP-адреса сохраняются в списке ip_list, и итерация выводит каждый вычисленный IPv4-адрес на ваш терминал.

Сам код можно настроить таким образом, чтобы работать с вычисленными IP-адресами.

см. также:

🐍 Как парсить и скрейпить HTML с помощью Pyquery



2021-09-03T18:01:17
Скрипты

10 самых жутких и забавных птиц в мире

Природа подарила нам многое. Мы живем на планете, где различные живые и неживые существа обеспечивают нам комфорт и душевный покой. Животные, птицы и растения так или иначе приносят нам пользу. Не только растения бывают бесчисленных форм и типов, но то же самое и с животными и птицами. Когда мы говорим о птицах, они принадлежат к разным местообитаниям и видам. Одни птицы удивительно красивы, а другие забавно выглядят благодаря своему неповторимому и великолепному внешнему виду.

Давайте посмотрим на 10 самых жутких и забавных птиц в мире и почему мы называем их жуткими или странными.

10 Шалфейный тетерев

Шалфейный тетерев широко распространен в Северной Америке и Австралии. У этой забавной птицы длинный хвост и выдающиеся черты лица. Взрослые собирают еду для детей и защищают их своими счетами от суровых погодных и экологических условий, а также от других опасных птиц. Шалфейные тетерева – редко встречающиеся птицы; именно поэтому их часто включают в список исчезающих видов птиц в мире.

9 Змеиные цесарки


Змеиные цесарки – одни из самых жутких и агрессивных птиц в мире. Они также известны как широко используемые дикие птицы и обладают длинным и острым клювом. Змеиные цесарки используют клюв, чтобы добывать мясо и насекомых изнутри почвы. По внешнему виду у этих птиц красные яркие глаза и острые шпоры.

8 Юнко

Юнко считается одной из самых забавных птиц в мире из-за своего V-образного вида. Эти птицы имеют небольшие размеры и очень легкий вес. Их коричневый и зеленый цвета помогают им прятаться в кустах и ​​лесах. Эти птички очаровательно выглядят, а их веточки делают их забавными.

7 Анхинга

Птиц анхинга также называют птицами-змеями. Они не только забавно выглядят, но и чрезвычайно опасны. Это жуткие существа, которые обитают в основном в районах с большим количеством воды и сырости. Некоторые называют их самыми странными видами птиц в мире. Птицы анхинга обычно встречаются в Австралии и Канаде.

6 колпиц

Колпицы живут группами и большими колониями. Они ловят свою добычу длинными и острыми клювами и имеют уродливые ноги, прямо как у динозавров. У колпиц треугольный язык, и они обычно ловят креветок и рыб из воды, чтобы удовлетворить свои потребности в кормлении. Эти птицы живут в гнездах.

5 капюшонов пересмешника

Капюшоны-пересмешники принадлежат к семейству Трэшеров. Они родом из островов Эквадора и Америки. Эти птицы известны как забавные певчие птицы с острым и изогнутым клювом и длинным языком. Эти птицы обычно живут в засушливых местах, но целый день бродят по воде в поисках пищи. Капюшоны-пересмешники считаются смертоносными кровососами.

4 крачка инков

У крачки инков есть усы, которые делают этих птиц уникальными и забавными. Их среда обитания – леса Южной Африки, Америки и некоторых частей Европы. Эти птицы получают удовольствие от половой жизни каждый день, в результате чего ежемесячно рожают различных детей. Крачки инков имеют разную окраску, но их длинный клюв и острые зубы делают их забавными.

3 Потоо

Потоос состоит из узоров серого, коричневатого и черного цветов. Они живут в коре и стволах деревьев. Интересно, что эти птицы спят весь день вертикально и обычно просыпаются ночью. Их глаза способны видеть насекомых темными ночами. Они ловят своих жертв, особенно ползучих и летающих насекомых. Эти птицы ловят жертв своим длинным языком и широким ртом. Весь процесс происходит очень быстро, и потусам требуется всего несколько секунд, чтобы поймать и переварить свою жертву, чтобы мгновенно получить энергию.

2 Большой белый пеликан

У больших белых пеликанов массивные челюсти, и они мгновенно заглатывают более крупных птиц. Они встречаются в холодных регионах мира. Вы можете легко увидеть множество больших белых пеликанов в лондонских парках. Основная цель этих птиц – крупные животные и другие птицы. Больших рыб и взрослых чаек они заглатывают за пару минут своим широким и расширенным ртом. Их зубы очень острые и обычно встречаются в районах, близких к рекам и озерам.

1 антарктический гигантский буревестник

Антарктические гигантские буревестники похожи на пингвинов птиц, обитающих в лесах недалеко от Атлантического океана и южной части Африки. Эти птицы весят около 8-10 кг и имеют размах крыльев около 2-4 метров. Антарктический гигантский буревестник имеет желтый, оранжевый и другие привлекательные цвета. У них гигантский вид и большой рот с острыми зубами. Это очень устрашающие и забавно выглядящие птицы, которые живут как колонии орлов.

Источник записи: wonderslist.com



2021-09-02T12:06:00
Животные

Самые умные птицы – ТОП-10 самых умных видов птиц в мире

Вы можете подумать, что животные неразумны, но это заблуждение. На самом деле они могут выполнять некоторые задачи, к которым они приспособлены даже лучше, чем люди. Однако вопрос «умны ли животные» до сих пор остается предметом дискуссий среди исследователей. Некоторые придерживаются мнения, что животные могут реагировать на определенные раздражители, в то время как другие утверждают, что эти существа генетически наделены определенными полезными инстинктами и не способны делать что-либо большее. Но что правда? Какому утверждению мы должны верить?

Что ж, это не так просто, интеллект – это сложное понятие, и ответ зависит от разных восприятий. Проблема животных в том, что их интеллект нельзя измерить количественно. Вы не можете заставить их пройти тесты или сравнить их со своими сверстниками. Затем исследователи разработали тесты для измерения когнитивных способностей животного, но не смогли найти правильных ответов. После множества проб и ошибок они поняли, что совершали ошибку, тестируя животных с помощью задач, которые могли выполнять только люди. После того, как они оценили каждый вид на предмет определенного поведения, понятного животному, они смогли определить свой интеллект.

Какие виды самые умные?

Все мы слышали о ловкости лисы и интеллекте дельфинов. В общем, вы можете рассматривать собак и кошек более умно, чем птиц, рептилий и насекомых. Это может вас удивить, но птицы – одни из самых умных существ в мире. Наши пернатые товарищи умны и могут адаптироваться к новым условиям и окружающей среде. Практическим примером этого является тот факт, что птицы преодолевают расстояния до 44000 миль во время миграции ради пищи и других ресурсов.

У них пропорционально большой мозг

Чтобы проанализировать интеллект птиц, мы можем рассмотреть размер и структуру мозга. Исследования показывают, что их мозг больше по сравнению с маленькими телами. Кроме того, различные области мозга птицы имеют более высокую взаимосвязь, чем остальные млекопитающие. Что ж, я не удивлен, то, как мой волнистый попугайчик имитирует все, что мы говорим вокруг него, много говорит о его интеллекте. Но это всего лишь один пример; многие другие наблюдения подтверждают это утверждение. Например, вьюрки-дятлы разрезают палки на отрезки соответствующей длины, чтобы использовать их в качестве инструментов для охоты на насекомых, или вороны-падальщики, которые кладут орехи на дорогу, чтобы приближающиеся машины могли раздавить скорлупы.

Что ж, в мире около 18000 видов, давайте взглянем на 10 самых умных птиц, попавших в список:

Вороны:

В США насчитывается более 30 миллионов ворон, но животные не получают должной оценки. Многие из нас могут считать их жуткими, но они одни из самых умных существ в мире. Вороны способны решать сложные задачи; их мозг почти размером с большой палец. Исследования также показывают, что они способны считать до 5, создавать индивидуальные инструменты для их использования и могут запоминать лица. Исследователи наблюдали это явление, сделав сканирование своего мозга, которое показало, что они могут идентифицировать людей, которые кажутся дружелюбными или опасными, и запоминать их лица. Вся семья Corvidae, в которую входят вороны, вороны, сойки и грачи, имеет очень сложную социальную структуру; они делятся информацией со всей группой, а затем принимают решения. Они также способны строить прочные связи с людьми.

Кеа:


Птица – одна из самых умных среди всех разновидностей и известна своими выходками. Кеа – это попугай, который происходит из Новой Зеландии. Хотя ки – дружелюбные и игривые птички, они имеют репутацию печально известной воровства еды. Кеасы беспокоят людей и имеют обыкновение уничтожать машины и оборудование. Однако по некоторым тестам на интеллект они превзошли животных, таких как гиббоны и обезьяны. Другое исследование выявило необычную характеристику нечеловеческих существ, которую продемонстрировал Кеа. В задаче, где одной птице приходилось ждать, пока другой партнер более минуты работает вместе и высвобождает пищу, Ки проявили замечательный интеллект и командную работу. Это показало их способность определять, когда им нужно работать в команде и ждать партнера по сотрудничеству.

Какаду:



Эти живые птицы принадлежат к семейству попугаев и не только умны, но и ласковы. Какаду обладают прекрасными речевыми способностями и могут имитировать звуки и слова, которые они слышат. Исследования показывают, что они умнее четырехлетних детей. Исследование показало, что какаду могут распознавать скрытый объект. Кроме того, они могут отслеживать один и тот же элемент, если вы поместите его в другое место. Фактически, их способность к постоянству объектов выше, чем у четырехлетних детей. Если вы держите одного из них в качестве домашнего питомца, убедитесь, что в клетке есть много забавных игрушек.

Ара:



Ара не только разноцветны, но и обладают яркой индивидуальностью. Они могут показаться забавными и интересными, но при этом довольно умны, игривы и ласковы. Это попугаи, принадлежащие к одному из шести родов, самый большой из которых имеет длину около 4 футов. Анализ последовательности генома ара показывает, что геном имел основу ДНК, которая составляет одну треть того, что есть у млекопитающих. Они могут выполнять фокусы и обладают отличными когнитивными способностями.

Африканский серый:



В серости известна своими способности говорить; они могут имитировать наши звуки и слова и быстро их улавливать. Они могут выучить до 200 слов или даже больше, а также могут имитировать звуки животных, чтобы отпугнуть хищников, но это еще не все. Согласно исследованию, эти попугаи обладают отличными способностями к рассуждению, которые могут и могут находить спрятанную пищу, используя свои навыки обнаружения. Человеческие дети развивают эту способность в трехлетнем возрасте, поэтому африканских серых можно считать умнее трехлетних.

Вороны:



Другой член семейства Corvidae, Вороны также являются одними из самых умных видов в мире. Известно, что вороны работают в командах во время охоты за едой, поскольку один партнер отвлекает родителей, а другой нападает на новорожденного. Исследования также показывают, что Вороны могут планировать будущее. Исследователи заметили, что птицы держали инструменты в стороне, которые, по их мнению, пригодились бы им позже. У них также есть свои уникальные призывы обращаться к другим воронам и отличные навыки памяти; они могут узнать друг друга после долгих лет разлуки.

Щелкунчики:



Они связаны с воронами и сойками; несомненно, в семье есть одни из самых умных птичек. Щелкунчики также известны своей памятью и знанием своего окружения. Летом они собирают огромное количество семян сосны на зиму и закапывают их на площади в 200 квадратных миль. Они запоминают все места (их может быть около 3000), где хранят эти семена. Они также достаточно умны, чтобы считать числа. Щелкунчики всегда выбирают из заданной кучи семян ту, в которой содержится большее количество семян.

Джейс:



К семейству относятся разные виды сойок, такие как голубая сойка, евразийская сойка, калифорнийская сойка и многие другие. Евразийский Джей умен, поскольку он знает, как произвести впечатление на свою половинку. Он получает подарки для супруга, и это, скорее всего, именно то, чего он хочет. Scrub Jays – планировщики, которые думают о будущем. Например, они решат, что они хотят съесть на завтрак на следующий день, найдут еду и сохранят ее. В неволе синие сойки умны и используют бумагу со дна клетки для создания инструментов, которые могут помочь достать предметы за пределами вольера. Недавние исследования также показали, что Jay’s может имитировать знакомые звуки и может имитировать людей.

Сорока:



Это единственные птицы, прошедшие испытание на зеркало. Тест – это метод оценки самосознания существа. В эксперименте на животное наносят метку или наклейку в месте, которое они не видят. Затем их заставляют стоять перед зеркалом, если птица царапает пятно и пытается его удалить; это показатель того, что они осознают себя. Его успешно прошли евразийские сороки. Также известно, что они хорошо играют в «прятки»; их результаты на уровне 4-5-летних. Они также общительны и могут копить блестящие предметы,

Ладьи:



Еще один член семейства вороньих, Грачи обладают исключительными навыками решения задач. Они могут решить задачу из басни Эзопа, где ворона должна пить воду из частично наполненного кувшина. Талантливые грачи также используют ту же технику, что и ворона в книге, и пьют воду. Они также используют и даже создают свои инструменты. Исследование, проведенное в университетах Кембриджа и Королевы Марии, показало, что грачи всегда выбирают правильный тип инструмента, когда им предлагают задачу и набор инструментов.

Автор Автор:

Даника Бойд – энтузиаст птиц и любителей природы. В течение нескольких лет она разводила домашних птиц и теперь имеет огромный практический опыт ухода за птицами. Она пишет для команды birdcagesnow.com.

Источник записи: www.wonderslist.com



2021-09-02T09:51:00
Животные

Ansible: Сбор произвольной информации на хостах с помощью Ansible custom facts. Вывод информации в формате *.json.

На чем было опробовано:




  1. Ansible 2.9.18
  2. Hyper-V на Windows 10 Pro.
  3. Сервер Ansible: CentOS Linux release 7.9.2009 (Core).
  4. Node 1: CentOS Linux release 7.9.2009 (Core).
  5. Node 2: CentOS Linux release 7.9.2009 (Core).
  6. Node 3: CentOS Linux release 7.9.2009 (Core).
  7. Node 4: CentOS Linux release 7.9.2009 (Core).








1. Задача.




К примеру, нам требуется с помощью внедрения custom facts для Ansible организовать сбор версий контейнеров, запущенных на серверах, а так же сбор версий некоторого программного обеспечения на серверах, которое имеет файл с указанием версии в своём каталоге /ecp/po/version.txt.




Собранная информация должна формироваться в json-формат.




Дополнительно требуется рассмотреть средства визуализации информации в удобном виде (opensource web-приложения).




2. Решение задачи.




Решение будет состоять из нескольких этапов:







В системе Ansible есть возможность собирать системную информацию, которая собирается в виде фактов с помощью встроенного модуля setup.




Со сбором стандартных переменных по умолчанию всё предельно ясно, но что делать, если мы хотим сформировать наши собственные переменные на всех хостах, чтобы в дальнейшем использовать их в нашем коде?




Для этого существует возможность добавления Custom facts, что делается следующим образом:







Создаем инвентарь test-servers.inventory на 4 тестовых сервера:




# mcedit /ansible/test-servers.inventory




С таким содержимым:




[test_servers]
server1   ansible_ssh_host=192.168.0.39 ansible_ssh_user=root
server2   ansible_ssh_host=192.168.0.30 ansible_ssh_user=root
server3   ansible_ssh_host=192.168.0.31 ansible_ssh_user=root
emachines ansible_ssh_host=192.168.0.12 ansible_ssh_user=root




Создаем специальный custom.fact файл для загрузки на узлы, который, по сути, является скриптом для выполнения некоторого комплекса действий на удалённом узле.




По замыслу будут собираться некоторые переменные и заворачиваться в разметку json.




#!/bin/bash

file_po="/etc/po/version.txt"
host_name=$(hostname)
ecp_ver=$(awk -F: '/rel_ver/{print $2}' $file_po)
docker_info=$(docker ps --format ' {{json .Names}}: {{json .Image}}, ' | paste -sd'n' | sed '$ s/.$//')
jp="/$host_name.json"

echo "{" > $jp
echo ""Информация об узлах": {" >> $jp
echo ""$host_name": {" >> $jp
if test -f "$file_po"; then
    echo ""Софт": {" >> $jp
    echo ""Версия чего-то": "$ecp_ver"" >> $jp
    echo "}" >> $jp
    echo "," >> $jp
fi
echo ""Докеры на узле": {" >> $jp
echo "$docker_info" >> $jp
echo "}" >> $jp
echo "}" >> $jp
echo "}" >> $jp
echo "}" >> $jp




Создаём специальный playbook custom-facts-fetch.yml, содержащий сценарий /ansible/files/custom.fact для узла, возвращающий некоторый файл json на Ansible master сервер с каждого узла:




---
- name: "Cбор Ansible custom facts"
  hosts: all

  tasks:
  - name: "Удаление предыдущей версии Ansible custom facts файлов на узле"
    file:
      state: "absent"
      path: "/etc/ansible/facts.d/"

  - name: "Создание Ansible custom fact каталога"
    file:
      path: "/etc/ansible/facts.d"
      state: "directory"
      mode: 0766

  - name: "Загрузка на узлы Ansible custom fact файлов"
    copy:
      src: "/ansible/files/custom.fact"
      dest: "/etc/ansible/facts.d/custom.fact"
      mode: +x

  - name: "Объявление служебной переменной для Ansible custom fact"
    debug: "var=ansible_local"
    notify:
    - reload facts

  - name: "Перезагрузка facts"
    setup: "filter=ansible_local"

  - name: "Подготовка списка файлов *.json для выгрузки с узла"
    find:
      paths: "/"
      recurse: "no"
      patterns: "*.json"
    register: "files_to_copy"

  - name: "Выгрузка файлов *.json с узла на Ansible master сервер"
    fetch:
      src: "{{ item.path }}"
      dest: "/ansible/json"
    with_items: "{{ files_to_copy.files }}"




Напишем скрипт custom-facts-fetch-PLAY.sh для запуска playbook на целевом inventory:




#!/bin/bash.

ansible-playbook /ansible/custom-facts-fetch.yml -i /ansible/test-servers.inventory




Сделаем файл скрипта исполняемым:




# chmod +x custom-facts-fetch-PLAY.sh




И запустим его.




Ответ:







После успешной отработки playbook на сервере Ansible master появится каталог /ansible/json с подкаталогами ‘имя_узла‘:







В каждом из которых будет находиться json файл вида имя_узла.json:
















Содержимое json файла первого узла emachines:







Содержимое json файла второго узла server1:







Содержимое json файла третьего узла server2:







Содержимое json файла четвертого узла server3:







Получилось несколько файлов json, по файлу с каждого целевого узла.




Сколько узлов мы задействовали для Ansible custom facts, столько и json файлов и будет.




В первом файле emachines.hamsterden.loc.json не имеется фрагмент с названием «Версия чего-то‘, по втором файле cos7client1.hamsterden.loc.json такой фрагмент имеется, а так как в custom.fact реализована проверка на фактическое наличия файла /ecp/po/version.txt.




К примеру, наличие файла /ecp/po/version.txt бывает только у серверов типа «web-server». Так как скрипт «сам учитывает» тип сервера, то можно смело применять custom.fact на все целевые серверы и файл json всегда будет генерироваться корректно для каждого типа серверов.




Для создание сводного json файла по всем файлам со всех узлам, воспользуемся утилитой jq.




Ссылка на официальный сайт утилиты: https://stedolan.github.io/jq/.




Установка утилиты:




# yum install jq -y




План работ с файлами:




file1.json + file3.json + file3.json + file4.json = final_result_po.json




Создадим make-final-json-file.sh скрипт:




# mcedit /ansible/make-final-json-file.sh




#!/bin/bash

#создание каталогов для обработки файлов
mkdir -p /ansible/json/temp
mkdir -p /ansible/json-ready

#каталог куда Ansible кладет скачанные json файлы с узлов
ja="/ansible/json"

#временный каталог куда Ansible складывает все json файлы из всех каталогов узлов перед сведением информации в единый файл json
jrt="/ansible/json/temp"

#каталог куда Ansible помещает сводный json файл со всей добытой информацией по узлам
jr="/ansible/json-ready"

#обработка файлов и удаление временных промежуточных результатов
cp -i $(find /$ja -iname "*.json") $jrt
cd $jrt
jq -s '.[0] * .[1] * .[2] * .[3]' *.json > "$jrt"/temp.json
cat "$jrt"/temp.json | sed 's/{}/"нет докеров"/' > "$jr"/final_result_po.json

#удаление временных каталогов и файлов
rm -rf $jrt
rm -rf $ja




Сделаем файл скрипта исполняемым:




# chmod +x /ansible/make-final-json-file.sh




Результатом работы скрипта будет сводный json файл всех четырёх final_result_po.json в каталоге /ansible/json_ready на Ansible master сервере:







Текстовый файл:




{
  "Информация об узлах": {
    "cos7client1.hamsterden.loc": {
      "Софт": {
        "Версия чего-то": "9.11.2"
      },
      "Докеры на узле": {
        "wordpress-compose_nginx_1": "nginx:latest",
        "wordpress-compose_wordpress_1": "wordpress:php7.4-fpm-alpine",
        "wordpress-compose_pma_1": "phpmyadmin/phpmyadmin",
        "wordpress-compose_mysql_1": "mariadb"
      }
    },
    "cos7client2.hamsterden.loc": {
      "Софт": {
        "Версия чего-то": "10.2.1"
      },
      "Докеры на узле": "нет докеров"
    },
    "cos7client3.hamsterden.loc": {
      "Софт": {
        "Версия чего-то": "9.3.4"
      },
      "Докеры на узле": "нет докеров"
    },
    "emachines.hamsterden.loc": {
      "Докеры на узле": {
        "onlyoffice": "onlyoffice/documentserver",
        "funny_heisenberg": "onlyoffice/documentserver"
      }
    }
  }
}




Если открыть final_result_po.json файл в браузере Mozilla Firefox, то информация будет корректно визуализирована в удобно читаемом виде:







Задача выполнена!




X. Оригиналы источников информации.




  1. golinuxcloud.com «Working with Ansible facts | Create custom facts with examples».
  2. github.com «Ansible local fact example».
  3. medium.com «Custom facts for Ansible».
  4. otus.ru «Ansible: формируем переменные на всех хостах с Custom facts».
  5. mydailytutorials.com «Working with Ansible facts – retrieving facts».
  6. adyxax.org «Ansible custom factsAnsible custom facts».
  7. Источник: https://hamsterden.ru/ansible-collecting-arbitrary-information-on-all-hosts-with-custom-facts/






2021-09-01T15:48:22
Software

Ansible: Часть 5. Настройка защищенных плейбуков.

На чем было опробовано:




  1. Ansible 2.9.18
  2. Hyper-V на Windows 10 Pro.
  3. Сервер Ansible: CentOS Linux release 7.9.2009 (Core).
  4. Node 1: CentOS Linux release 7.9.2009 (Core).
  5. Node 2: CentOS Linux release 7.9.2009 (Core).
  6. Node 3: CentOS Linux release 7.9.2009 (Core).








1. Введение.




Как установить и первоначально настроить Ansible описано здесь:




Ссылка: «Ansible: Часть 1. Описание, установка и первоначальная настройка.»




Так как простые задачи для Ansible реально простые, в буквальном смысле слова, то я принял решение вынести их в отдельную инструкцию:




Ссылка: «Ansible: Часть 2. Примеры простых задач.»




Рассмотрим структуру и правила написания таких сценариев более подробно.




Ссылка: «Ansible: Часть 3. Сценарии (плейбуки) — Playbooks.»




По данной ссылке я создам небольшую подборку самых интересных и типовых плейбуков, которые могут пригодиться вам в повседневной работе.




Ссылка: «Ansible: Часть 4. Практические примеры плейбуков.»




2. Ansible Vault для хранения конфиденциальных данных.




Если ваши плейбуки Ansible содержат конфиденциальные данные, такие как пароли, ключи API и учетные данные, важно обеспечить их безопасность с помощью шифрования. Ansible предоставляет ansible-vault для шифрования файлов и переменных.




Несмотря на то, что любой файл данных Ansible, а также двоичные файлы, возможно зашифровать изначально, чаще для шифрования переменных файлов, содержащих конфиденциальные данные, используется ansible-vault. После шифрования файла с помощью этого инструмента вы сможете выполнять, редактировать или просматривать его, только предоставив соответствующий пароль, указанный при первом шифровании файла.




2.1. Создание нового зашифрованного файла.




Вы можете создать новый зашифрованный файл Ansible с помощью:




# ansible-vault create credentials.yml




Эта команда выполнит следующие действия:




  1. Сначала вам будет предложено ввести новый пароль. Вам нужно будет указывать этот пароль при каждом доступе к содержимому файла, будь то редактирование, просмотр или просто запуск плейбука или команд с использованием его значений.
  2. Затем откроется редактор командной строки по умолчанию, чтобы вы могли заполнить файл требуемым содержимым.
  3. Наконец, когда вы закончите редактирование, ansible-vault сохранит файл как зашифрованный.




2.2. Шифрование существующего файла.




Чтобы зашифровать существующий файл Ansible, вы можете использовать следующую команду:




# ansible-vault encrypt credentials.yml




Эта команда запросит у вас пароль, который вам нужно будет вводить при каждом доступе к файлу credentials.yml.




2.3. Просмотр содержимого зашифрованного файла.




Если вы хотите просмотреть содержимое файла, который ранее был зашифрован с помощью ansible-vault, и вам не нужно изменять его содержимое, вы можете использовать команду:




# ansible-vault view credentials.yml




Она предложит вам указать пароль, который вы выбрали при первом шифровании файла с помощью ansible-vault.




2.4. Редактирование зашифрованного файла.




Чтобы изменить содержимое файла, который ранее был зашифрован с помощью ansible-vault, выполните:




# ansible-vault edit credentials.yml




Эта команда предложит вам указать пароль, который вы выбрали при первом шифровании файла credentials.yml. После проверки пароля откроется редактор командной строки по умолчанию с незашифрованным содержимым файла, что позволит вам внести нужные изменения. По завершении вы можете сохранить и закрыть файл, как обычно, и обновленное содержимое будет сохранено и зашифровано.




2.5. Расшифровка файлов.




Если вы хотите навсегда расшифровать файл, ранее зашифрованный с помощью ansible-vault, вы можете сделать это с помощью следующего синтаксиса:




# ansible-vault decrypt credentials.yml




Эта команда предложит вам ввести тот пароль, который использовался при первом шифровании файла. После проверки пароля содержимое файла будет сохранено на диск в виде незашифрованных данных.




3. Использование нескольких паролей.




Ansible поддерживает для хранилища несколько паролей, сгруппированных по разным идентификаторам. Это полезно, если вы хотите иметь выделенные пароли хранилища для различных сред – для разработки, тестирования и производства.




Чтобы создать новый зашифрованный файл с пользовательским идентификатором хранилища, включите параметр --vault-id вместе с меткой и расположением, где ansible-vault может найти пароль для этого хранилища. Метка может быть любой, а расположение может быть либо prompt (что означает, что команда должна предложить вам ввести пароль), либо путь к файлу паролей.




# ansible-vault create --vault-id dev@prompt credentials_dev.yml




Это создаст новый идентификатор по имени dev, который использует prompt для получения пароля. Комбинируя этот метод с файлами переменных группы, вы сможете создать отдельные хранилища для каждой среды приложения:




# ansible-vault create --vault-id prod@prompt credentials_prod.yml




Мы использовали dev и prod в качестве идентификаторов хранилищ, чтобы продемонстрировать, как вы можете создавать отдельные хранилища для каждой среды. Самостоятельно вы можете создать столько хранилищ, сколько захотите, и использовать любой ID.




Теперь, чтобы просмотреть, отредактировать или расшифровать эти файлы, вам необходимо предоставить тот же ID хранилища и источник пароля вместе с командой ansible-vault:




# ansible-vault edit credentials_dev.yml --vault-id dev@prompt




4. Использование файла паролей.




Если вам нужно автоматизировать процесс инициализации серверов в Ansible с помощью стороннего инструмента, вам потребуется способ ввода пароля хранилища без его запроса. Вы можете сделать это, используя файл паролей через ansible-vault.




Файл паролей может быть простым текстовым файлом или исполняемым скриптом. Если файл является исполняемым, выходные данные, созданные ним, будут использоваться в качестве пароля хранилища. В противном случае в качестве пароля хранилища будет использоваться необработанное содержимое файла.




Чтобы применить файл паролей в ansible-vault, необходимо указать путь к файлу паролей при выполнении любой из команд vault:




# ansible-vault create --vault-id dev@path/to/passfile credentials_dev.yml




Ansible не различает контент, который был зашифрован с помощью prompt, и простой файл пароля при условии, что входной пароль один и тот же. С практической точки зрения это означает, что файл можно зашифровать, используя prompt, а затем создать файл пароля для хранения того же пароля, который использовался в методе prompt. Также верно и обратное: вы можете зашифровать содержимое, используя файл паролей, а затем использовать метод prompt, предоставляя тот же пароль при запросе Ansible.




Для большей гибкости и безопасности, чтобы не хранить свой пароль в текстовом файле, вы можете использовать скрипт Python для получения пароля из других источников.




Официальный репозиторий Ansible содержит несколько примеров сценариев, которые вы можете использовать для справки при создании своего скрипта под потребности вашего проекта.




5. Запуск плейбука с зашифрованными данными.




Каждый раз, когда вы запускаете плейбук, в котором используются данные, ранее зашифрованные с помощью ansible-vault, вам нужно будет указывать пароль хранилища в команде playbook.




Если вы использовали параметры по умолчанию и prompt при шифровании данных плейбука, вы можете использовать опцию --ask-vault-pass, чтобы Ansible запрашивал пароль:




# ansible-playbook myplaybook.yml --ask-vault-pass




Если вы использовали файл пароля вместо prompt, вы должны использовать опцию --vault-password-file:




# ansible-playbook myplaybook.yml --vault-password-file my_vault_password.py




Если вы используете данные, зашифрованные с помощью ID, вам нужно указать тот же ID хранилища и источник пароля, который вы использовали при первом шифровании данных:




# ansible-playbook myplaybook.yml --vault-id dev@prompt




Если вы используете файл пароля с ID, вы должны указать метку, а затем полный путь к файлу пароля в качестве источника:




# ansible-playbook myplaybook.yml --vault-id dev@vault_password.py




Если ваш play использует несколько хранилищ, вы должны добавить параметр --vault-id для каждого из них в произвольном порядке:




# ansible-playbook myplaybook.yml --vault-id dev@vault_password.py --vault-id test@prompt --vault-id ci@prompt




6. Оригиналы источников информации.




  1. selectel.ru «Система управления конфигурацией Ansible».
  2. dmosk.ru «Инструкция по установке и запуску Ansible на CentOS».
  3. dmosk.ru «Что такое ansible».
  4. 8host.com «Как работать с Ansible: простая удобная шпаргалка».
  5. habr.com «Автоматизируем и ускоряем процесс настройки облачных серверов с Ansible. Часть 1: Введение».
  6. kamaok.org.ua «Установка и использование Ansible на Centos7».
  7. Источник: https://hamsterden.ru/ansible-vault-playbooks/






2021-09-01T15:40:11
Software