Поскольку # считается комментарием в / etc / ansible / hosts, я не могу использовать пароль, содержащий четкое.
[hosts]
host1 ansible_ssh_user=user ansible_ssh_pass=userpass ansible_su_pass=My#Password
Затем с помощью необработанной команды:
$ ansible host1 -m raw -a "whoami" --su
host1 | FAILED | rc=1 >>
su: Authentication failure
Если я использую пароль без #, он работает нормально. Есть ли обходной путь?
Ты можешь использовать #
встроенный, экранируя его с помощью \
, т.е. ansible_su_pass=My\#Password
. Убедитесь, что вы используете последнюю версию Ansible, поскольку синтаксический анализатор ini со временем эволюционировал.
В файле инвентаризации приведенный ниже пример дает желаемый результат.
[hosts:vars]
ansible_su_pass=My#Password
Но затем переменная связана со всеми хостами в группе хостов, поэтому лучше создать файл "/ etc / ansible / host_vars / host1" и поместить внутрь следующее:
ansible_su_pass: My#Password