Я пытаюсь создать роль EBS для моих сценариев Ansible. Я собираюсь создать том EBS и присоединить его к себе через консоль. Я хочу, чтобы эта роль выполняла команды и монтировала диск, если диск еще не установлен, но пропустите это, если он уже установлен.Ansible - Проверьте, установлен ли накопитель
я имею у себя конкретный ВАР, которые дают список дисков и точки монтирования:
ebs_vols:
- drive: /dev/sdb
mount_point: /mnt/ebs1
directory: /var/lib/mysql
- drive: /dev/sdc
mount_point: /mnt/ebs2
directory: /var/backups
Я хочу, чтобы моя задача проверить каждый диск с командой df
и посмотреть, если он установлен. Затем пропустить команды, если диск установлен:
- name: Check if drives are already mounted
shell: df | grep "{{item.drive}}" | wc -l
with_items: "{{ebs_vols}}"
register: ebs_checked
- name: output debug
debug: var=ebs_checked
- name: Make filesystem
filesystem:
fstype: xfs
dev: "{{item.item.drive}}"
when: "{{item.stdout}} == 0"
with_items: ebs_checked.results
Когда я запускаю его, по-видимому, чтобы проверить каждый диск просто отлично, потому что выход debug
является объектом с правильными дисками и стандартным выводом. Проблема заключается в задаче Make filesystem
. Ошибки из-за ошибки:
The conditional check '{{item.stdout}} == 0' failed. The error was: error while evaluating conditional ({{item.stdout}} == 0): 'ansible.vars.unsafe_proxy.AnsibleUnsafeText object' has no attribute 'stdout'\n\n
Что я здесь отсутствует, и что это лучший способ, чтобы пропустить команды, если диск уже установлен?
А, я вижу. Ошибка новичков. Я новичок в Ansible, и я предполагаю, что ожидал какой-то синтаксической ошибки, а не пытался ее выполнить. Благодаря! – gkrizek
Синтаксическая ошибка отсутствует. 'item' присваивается строковое значение' ebs_checked.results', и вы получили сообщение об ошибке, что он не содержит ключ 'stdout', который вы пытались использовать. – techraf
Это использование голых переменных в циклах 'with_' было устарело в Ansible 2.0 и удалено в 2.2 - см. Руководство по перемещению [Ansible 2.0 porting] (https://docs.ansible.com/ansible/porting_guide_2.0.html#deprecated). – RichVel