#ansible #change-password
#ansible #смена пароля
Вопрос:
Я создаю сборник задач, который входит в виртуальную машину и выполняет начальную настройку. Образ, используемый для создания виртуальной машины, имеет имя пользователя по умолчанию, которое требует смены пароля при первоначальном входе в систему. Я ищу способ, как справиться с этим в Ansible?
Ответ №1:
Я нашел решение своей проблемы следующим образом, используя модуль ansible «expect» https://docs.ansible.com/ansible/latest/collections/ansible/builtin/expect_module.html
- name: Change password on initial login
delegate_to: 127.0.0.1
become: no
expect:
command: ssh {{ ansible_ssh_common_args }} {{ user_expert }}@{{ inventory_hostname }}
timeout: 20
responses:
Password: "{{ user_expert_password }}"
UNIX password: "{{ user_expert_password }}"
New password: "{{ user_expert_password_new }}"
new password: "{{ user_expert_password_new }}"
"\~\]\$": exit
register: status
Комментарии:
1. Если вы попытаетесь запустить playbook для списка инвентаря, который включает серверы, которым требуется изменить пароль при первом входе в систему, вы получите сообщение об ошибке типа «Требуется смена пароля, но TTY недоступен». Это связано с тем, что ansible пытается подключиться к хосту по ssh еще до того, как ваша задача начнет выполняться, и получает эту ошибку. Вам нужно будет перебирать список IP-адресов в вашей задаче, пока вы запускаете свой ansible playbook только на localhost.
Ответ №2:
Вы ищете пользовательский модуль, особенно параметр пароля.
Имейте в виду, что для этой password
опции требуется хэш фактического пароля. Проверьте здесь, как это сделать. (Он должен быть хэширован, иначе у вас будет открытый текстовый пароль в вашем playbook или инвентаре, что может представлять угрозу безопасности.)
Пример:
- name: ensure password of default user is changed
user:
name: yourdefaultuser
password: '$6$QkjC8ur2WfMfYGA$ZNUxTGoe5./F0b4GJGrcEA.ff9An473wmPsmU4xv00nSrN4D/Nxk8aKro/E/LlQVkUJLbLL6qk2/Lxw5Oxs2m.'
Обратите внимание, что хэш пароля был сгенерирован mkpasswd --method=sha-512
для пароля somerandompassword
.
Комментарии:
1. Пожалуйста, перечитайте мой вопрос. Когда виртуальная машина развернута, ansible не может получить к ней доступ, поскольку она не может позволить вам войти в систему с именем пользователя и паролем по умолчанию, пока пароль не будет изменен.
2. В вашем вопросе говорится: «имеет имя пользователя по умолчанию, которое требует смены пароля при первоначальном входе в систему», что не соответствует вашему последнему комментарию. В вашем вопросе не указано, что вы не можете войти в систему, используя эти учетные данные. Однако, как бы вы вообще вошли в систему? Почему вы не можете войти в систему с учетными данными по умолчанию?
3. Чтобы избежать путаницы, ниже приведены журналы при первом подключении к виртуальной машине по ssh из моей системы ~~~ # ssh default@X.X.X.X ЕСЛИ ВЫ НЕ АВТОРИЗОВАННЫЙ ПОЛЬЗОВАТЕЛЬ, ПОЖАЛУЙСТА, НЕМЕДЛЕННО ВЫЙДИТЕ ИЗ пароля: Вам необходимо немедленно сменить свой пароль (root принудительно) Изменение пароля для эксперта. (текущий) Пароль UNIX: Новый пароль: Повторный ввод нового пароля: ~~~ как справиться с этим через Ansible?
4. Это похоже на пользовательское сообщение, что это за изображение, кто его создал?
5. Это VNF telco .. принуждение пользователя к смене пароля при первом входе в систему является нормальным в Linux. Если вы создадите пользователя с опцией «-e «, пользователь будет вынужден изменить пароль при первоначальном входе в систему.