#ansible
#ansible
Вопрос:
У меня ниже задача настроить IPv6, а не отключить настройки. когда я использовал ansible_default_ipv4.interface
значения, его включали в значение кавычки. как удалить цитату из значения факта ansible для приведенной ниже задачи?
- name: Ensure IPv6 not disabled with sysctl
sysctl:
name: "{{ item }}"
value: '0'
state: present
sysctl_file: /etc/sysctl.conf
reload: yes
with_items:
- "net.ipv6.conf.{{ ansible_default_ipv4.interface }}.disable_ipv6"
ignore_errors: yes
Это дает следующее сообщение
cannot stat /proc/sys/net/ipv6/conf/"ens192"/disable_ipv6: No such file or directory
Вот значение факта:
"ansible_default_ipv4": {
"alias": "ens192",
"interface": "ens192",
"mtu": 1500,
"type": "ether"
},
Спасибо
SR
Комментарии:
1. Не уверен, почему возникает ошибка, вы используете последнюю версию ansible? Кстати, поскольку вы заполняете «элемент» в
with_items
предложении, вам не нужно использовать фигурные скобки вname
строке, т.е. Вы можете использовать:name: item
но опять же, ваша задача должна работать как сейчас.
Ответ №1:
Работает для меня в Ansible 2.9.6. Например
- sysctl:
name: "{{ item }}"
value: "1"
register: result
with_items:
- "net.ipv4.conf.{{ ansible_default_ipv4.interface }}.forwarding"
- debug:
var: result
дает
TASK [sysctl] ****
ok: [localhost] => (item=net.ipv4.conf.eth0.forwarding)
TASK [debug] ****
ok: [localhost] =>
result:
changed: false
msg: All items completed
results:
- ansible_loop_var: item
changed: false
failed: false
invocation:
module_args:
ignoreerrors: false
name: net.ipv4.conf.eth0.forwarding
reload: true
state: present
sysctl_file: /etc/sysctl.conf
sysctl_set: false
value: '1'
item: net.ipv4.conf.eth0.forwarding
Комментарии:
1. то же самое не сработало для меня. Я использую
ansible 2.9.10
клиентскую машинуCentOS 8
2. ИМХО, это не проблема sysctl. Я бы проверил конкатенацию, например
"{{ 'begin.' ~ ansible_default_ipv4.interface ~ '.end' }}"
3. первый раз запускал это так
net.ipv6.conf."{{ ansible_default_ipv4.interface }}".disable_ipv6
. он добавил эту строку в/etc/sysctl.conf
файл. после удаления этого файла из файла он работал нормально. Спасибо4. Смотрите, когда заключать переменные в кавычки .