Ansible е един от най-добрите налични инструменти за автоматизация, предлагащ прости, интуитивни и мощни инструменти за изпълнение на задачи по автоматизация в съвременния свят.
За повечето задачи по автоматизация ще трябва да създавате директории, особено когато инсталирате различни инструменти и приложения, архивирате и възстановявате. Въпреки че можете да изпълнявате тези задачи с помощта на автоматизиран скрипт, Ansible предоставя по-добра функционалност, което ви позволява да създавате директории в определени хостове.
Този урок ви показва как да използвате файловия модул Ansible за създаване, премахване и промяна на разрешенията за директории за посочени хостове.
Как да създадете директория в Ansible
Всеки от следните методи може да се използва за създаване на директория в Ansible:
- Сурова Ansible команда с командния модул
- Файлов модул в Ansible playbook
За да създадете директория в Ansible с помощта на командния модул, въведете командата, показана по-долу:
$ ansible all -m команда -a "mkdir ~ / архиви"След въвеждане на горната команда, трябва да получите изхода, показан по-долу:
Въведете парола за ключ „/ начало / потребител /.ssh / id_rsa ':[ПРЕДУПРЕЖДЕНИЕ]: Помислете за използване на файловия модул с state = директория, вместо да стартирате 'mkdir'. Ако трябва да използвате команда, тъй като файлът е недостатъчен, можете да добавите „warn: false“ към тази командна задача или да зададете „command_warnings = False“ в ansible.cfg, за да се отървете от това съобщение.
35.222.210.12 | ПРОМЕНЕН | rc = 0 >>
Уверете се, че вашият списък с хостове Ansible в / etc / ansible / hosts съдържа правилната информация за вашите отдалечени хостове.
Въпреки че командният модул е лесен за използване на един Ansible хост, той става много неефективен при работа с множество хостове с различни директории и задачи.
За да се противопоставим на този недостатък, ще използваме файловия модул Ansible и ще изградим книга за игра, съдържаща хостовете, които искаме да използваме, и директориите, които искаме да създадем.
ЗАБЕЛЕЖКА: Файловият модул може да се използва и като единична команда в Ansible, но работи подобно на командния модул.
За да използвате Ansible playbook, създайте YAML файл и въведете следните записи, за да създадете директория:
- домакини: всички задачи:- name: Ansible file module create directory
файл:
път: ~ / архиви
състояние: директория
Запазете файла и използвайте ansible-playbook, за да създадете директориите:
ansible-playbook mkdir.ymlТова трябва да доведе до резултат като този по-долу, показващ, че действията са били извършени успешно с помощта на посочения файл на playbook.
Играй всичко] ********************************************** **************************************************** *************ЗАДАЧА [Събиране на факти] *********************************************** **************************************************** **
Въведете парола за ключ „/ начало / потребител /.ssh / id_rsa ':
добре: [35.222.210.12]
ЗАДАЧА [Ansible file module create directory] ****************************************** **********************************
добре: [35.222.210.12]
ИГРАЙТЕ ЗАПИСВАНЕ ************************************************** **************************************************** ***********
35.222.210.12: ok = 2 променени = 0 недостижими = 0 неуспешни = 0 пропуснати = 0 спасени = 0 игнорирани = 0
Как да създадете множество директории с елементи
Ansible playbooks също ви позволяват да създавате множество директории, като използвате оператора with_items във файла YAML.
Например, за да създадете резервни копия за трите услуги, MySQL, хранилище и конфигурация, можете да изградите задачата, показана в YAML файла по-долу:
- домакини: всички задачи:- name: Ansible създава множество директории with_items
файл:
път: ~ / архиви / item
състояние: директория
with_items:
- „mysql“
- „хранилище“
- „конфиг“
Запазете горния файл и го стартирайте с ansible-playbook.
$ ansible-playbook mkdir_multi.yml PLAY [всички] *********************************************** **************************************************** **************************************************** **************************************************** ***ЗАДАЧА [Събиране на факти] *********************************************** **************************************************** **************************************************** *****************************************
Въведете парола за ключ „/ начало / потребител /.ssh / id_rsa ':
добре: [35.222.210.12]
ЗАДАЧА [Ansible създаване на множество директории с_ елементи] ****************************************** **************************************************** **************************************************** *************
променен: [35.222.210.12] => (артикул = mysql)
променен: [35.222.210.12] => (артикул = хранилище)
променено: [35.222.210.12] => (артикул = конфигурация)
ИГРАЙТЕ ЗАПИСВАНЕ ************************************************** **************************************************** **************************************************** ****************************************************
35.222.210.12: добре = 2 променени = 1 недостижим = 0 неуспешно = 0 пропуснато = 0 спасено = 0 игнорирано = 0
Горната книга за игри трябва да създава множество директории, като ~ / backups / mysql, ~ / backups / repository и ~ / backups / config.
$ ls -laИзходът на списъка с директории е както е показано по-долу:
общо 0drwxrwxr-x. 5 debian debian 51 март 6 17:26 .
drwx------. 6 debian debian 117 март 6 17: 26…
drwxrwxr-x. 2 debian debian 6 март 6 17:26 конфиг
drwxrwxr-x. 2 debian debian 6 март 6 17:26 mysql
drwxrwxr-x. 2 debian debian 6 март 6 17:26 хранилище
Как да зададете разрешения за директория
Ansible ви позволява да посочите разрешения за директория, използвайки директивата за режим. Обмислете следната книга за игри, която създава директория и задава разрешения:
- домакини: всичкизадачи:
- name: Ansible създаване на директория и задаване на разрешения
файл:
път: / архиви
състояние: директория
режим: "u = rw, g = wx, o = rwx"
ставам: да
В горния запис създадохме директория в /. Ние също трябваше да станем корен, следователно влизането: да: да.
$ ansible-playbook разрешение.yml PLAY [всички] *********************************************** **************************************************** **************************************************** **************************************************** ***ЗАДАЧА [Събиране на факти] *********************************************** **************************************************** **************************************************** *****************************************
Въведете парола за ключ „/ начало / потребител /.ssh / id_rsa ':
добре: [35.222.210.12]
ЗАДАЧА [Ansible създаване на директория и задаване на разрешения] ***************************************** **************************************************** **************************************************** ****************
променено: [35.222.210.12]
ИГРАЙТЕ ЗАПИСВАНЕ ************************************************** **************************************************** **************************************************** ****************************************************
35.222.210.12: добре = 2 променени = 1 недостижим = 0 неуспешно = 0 пропуснато = 0 спасено = 0 игнорирано = 0
Ако прегледате разрешенията на създадената от нас директория, ще видите следното:
$ ls -lrt / | grep архивиРезултатът е както е показано по-долу:
drw - wxrwx. 2 root root 6 март 6 17:36 архивиКак рекурсивно да променяте разрешенията в директория
За да промените разрешенията на директорията и нейните файлове рекурсивно, просто посочете рекурсивния запис, както е показано по-долу:
- домакини: всичкизадачи:
- name: Ansible създаване на директория и задаване на разрешения
файл:
път: / архиви
състояние: директория
режим: "u = rw, g = wx, o = rwx"
рекурсивно: да
ставам: да
Как да зададете разрешения в множество директории
Настройването на разрешения за множество директории в Ansible също е толкова просто, колкото няколко реда записи. Обмислете следната книга за игри.
- домакини: всичкизадачи:
- name: Ansible създаване на множество директории с разрешения
файл:
път: "елемент.път "
режим: "артикул.режим "
състояние: директория
with_items:
- път: '~ / архиви / mysql', режим: '0777'
- път: '~ / архиви / хранилище', режим: '0755'
- път: '~ / архиви / конфигурация', режим: '0707'
Как да изтрия директория в Ansible
За да премахнете директория и цялото й съдържание с помощта на Ansible playbook, посочете състоянието като отсъстващо, както е показано по-долу:
- домакини: всичкизадачи:
- name: Отговорна директория за изтриване
файл:
път: / архиви
състояние: отсъства
ставам: да
Тази команда ще премахне директорията и всички дъщерни файлове и директории.
ЗАБЕЛЕЖКА: Уверете се, че имате разрешения за директорията, върху която работите.
Как да създадете директория с времеви марки
В някои случаи може да се наложи да създадете директория с прикрепен клеймо за време, което може да бъде много полезно, особено при създаване на резервни копия. За да създадем директория с времеви марки, можем да използваме променливата ansible_date_time.
Обмислете следната книга за игри:
- домакини: всичкизадачи:
- name: Ansible добавяне на клеймо за време в директорията
файл:
път: "/ резервни копия / mysql ansible_date_time.дата"
състояние: директория
режим: "0777"
ставам: да
След като стартирате плейбека, ще имате директория с клеймото за време.
$ ls -lСписъкът с директории трябва да бъде както е показано по-долу:
общо 0 drwxrwxrwx. 2 корен корен 6 март 6 18:03 mysql2021-03-06ЗАБЕЛЕЖКА: За да избегнете грешки, винаги проверявайте синтаксиса на YAML файла, който възнамерявате да използвате в Ansible.
Заключение
Този урок ви показа, че работата с модули Ansible е много лесна и интуитивна, което прави автоматизирането на сложни задачи по-лесно. Използвайки файловия модул Ansible, можете да създадете една или повече директории и да добавите разрешения за всяка. Можете също да използвате същия модул за премахване на директория. За повече информация как да използвате файловия модул Ansible, проверете официалната документация на страницата с ресурси.