ansible.builtin.password – получение или генерация случайного пароля, хранящегося в файле
Примечание
Этот модуль является частью ansible-base и включён во все установки Ansible. В большинстве случаев, вы можете использовать короткое имя модуля password даже без указания ключевого слова collections:. Несмотря на это, мы рекомендуем использовать полное имя класса (FQCN) для лёгкой ссылки на документацию модуля и для предотвращения конфликтов с другими коллекциями, которые могут иметь то же имя модуля.
Добавлен в версии 1.1: of ansible.builtin
Описание
- Генерирует случайный текстовый пароль и сохраняет его в файле по заданному пути.
- Если файл уже существует, он получит его содержимое, действуя точно так же, как с модулем with_file.
- Использование переменных, таких как
"{{ inventory_hostname }}", в пути к файлу позволяет настраивать случайные пароли для каждого хоста, что упрощает управление паролями в"host_vars"переменных. - Особый случай — использование /dev/null в качестве пути. Поиск пароля будет генерировать новый случайный пароль каждый раз, но не будет записывать его в /dev/null. Это может быть использовано, когда вам нужен пароль без его сохранения на контроллере.
Параметры
| Параметр | Варианты/Значения по умолчанию | Настройка | Комментарии |
|---|---|---|---|
| _terms строка / обязательно | путь к файлу, хранящему/будущему хранить пароли | ||
| chars строка добавлен в 1.4 of ansible.builtin | Определяет список символов, разделённых запятыми, которые составляют пользовательский набор символов в сгенерированных паролях. По умолчанию сгенерированные пароли содержат случайную смесь прописных и строчных букв ASCII, цифр от 0 до 9 и знаков препинания (". , : - _"). Они могут быть либо частями атрибутов модуля Python string (ascii_letters,digits и т.д.), либо использоваться буквально (:, -). Для ввода запятой используйте две запятые ',,' где-нибудь — предпочтительно в конце. Цитаты и двойные кавычки не поддерживаются. | ||
| encrypt строка | Схема хеширования для шифрования возвращаемого пароля, должна быть одной из схем хеширования из passlib.hash; md5_crypt, bcrypt, sha256_crypt, sha512_crypt
Если не указано, пароль будет возвращён в открытом виде. Обратите внимание, что пароль всегда хранится в открытом тексте, только возвращаемый пароль шифруется. Encrypt также принудительно сохраняет значение соли для идемпотентности. Обратите внимание, что до версии 2.6 этот параметр долгое время ошибочно маркировался как булевый. | ||
| length целое число | По умолчанию: 20 | Длина сгенерированного пароля. |
Примечания
Примечание
- Отличной альтернативой модулю поиска паролей, если вам не нужно генерировать случайные пароли для каждого хоста, будет использование Vault в заданиях. Прочитайте документацию Vault и рассмотрите использование его в первую очередь, это будет более желательно для большинства приложений.
- Если файл уже существует, в него не будут записаны данные. Если файл содержит содержимое, это содержимое будет считано как пароль. Пустые файлы приводят к тому, что пароль возвращается как пустая строка.
- Как и все поиски, это выполняется на хосте Ansible пользователем, запускающим задание, и «become» не применяется, целевой файл должен быть доступен для чтения пользователем задания, или, если он не существует, пользователь задания должен иметь достаточные права для его создания. (Таким образом, например, попытки записи в такие области, как /etc, завершатся неудачей, если всё задание не выполняется от имени root).
Примеры
- name: create a mysql user with a random password
mysql_user:
name: "{{ client }}"
password: "{{ lookup('password', 'credentials/' + client + '/' + tier + '/' + role + '/mysqlpassword length=15') }}"
priv: "{{ client }}_{{ tier }}_{{ role }}.*:ALL"
- name: create a mysql user with a random password using only ascii letters
mysql_user:
name: "{{ client }}"
password: "{{ lookup('password', '/tmp/passwordfile chars=ascii_letters') }}"
priv: '{{ client }}_{{ tier }}_{{ role }}.*:ALL'
- name: create a mysql user with an 8 character random password using only digits
mysql_user:
name: "{{ client }}"
password: "{{ lookup('password', '/tmp/passwordfile length=8 chars=digits') }}"
priv: "{{ client }}_{{ tier }}_{{ role }}.*:ALL"
- name: create a mysql user with a random password using many different char sets
mysql_user:
name: "{{ client }}"
password: "{{ lookup('password', '/tmp/passwordfile chars=ascii_letters,digits,hexdigits,punctuation') }}"
priv: "{{ client }}_{{ tier }}_{{ role }}.*:ALL"
Возвращаемые значения
Общие возвращаемые значения документированы здесь, следующие поля уникальны для этого поиска:
| Ключ | Возвращено | Описание |
|---|---|---|
| _raw список / элементы=строка | успех | пароль |
Авторы
- Daniel Hokka Zakrisson (!UNKNOWN) <daniel@hozac.com>
- Javier Candeira (!UNKNOWN) <javier@candeira.com>
- Maykel Moya (!UNKNOWN) <mmoya@speedyrails.com>
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/ansible/builtin/password_lookup.html