Станислав
в инвентори прописан юзер1 и его ключ. на хосте еще нет УЗ user1, но есть root и его ключ
Станислав
как таске сказать, чтобы использовал УЗ root
Fire
Fire
Станислав
Станислав
а в дальнейшем тогда, как первичную УЗ юзер1 использовать
Fire
Fire
Valiy
Станислав
ну смотря какая задача
Есть таска
- name: Ensuring ansible user is actual
user:
name: ansible
groups: wheel
password: '{{ users.ansible.pass }}'
create_home: yes
shell: /bin/bash
- name: Ensuring 'ansible_user' user authorized_keys is present
authorized_key:
user: '{{ ansible_user }}'
key: '{{ ssh_pub_keys }}'
Ее надо запустить от УЗ root
Valiy
Станислав
ну да. перед началом основного таска
Андрей
run once
Valiy
ну да. перед началом основного таска
Если тебе один раз надо добавить юзера и дальше пользоваться уже созданным юзером, то запусти ansible-playbook с параметрами -u —private-key как я написал выше. Если тебе периодически нужно будет( например на новых хостах) запускать эти таски от рута, то укажи имя юзера прям в плейбуке
Станислав
Fire
Valiy
Станислав
remote_user не подходит в таком виде. Ему же надо еще как-то указать ключ для подключения. А вот это я и не нашел
Станислав
да. но ключ прописан для УЗ, которой еще нет. И если я подставлю УЗ и ключ root, то потом надо будет под другую УЗ переделывать?
Denis
Добрый день
Подскажите, как правильно итерироваться по такому списку с вложенностью?
blue_pools:
- app.gslb.example.com:
- app.example.com-blue-dc1
- app.example.com-blue-dc2
- api.gslb.example.com:
- api.example.com-blue-dc1
- api.example.com-blue-dc2
Denis
В таске должно получится, что-то типо такого:
- name: Debug vars
debug:
msg: "Pool: {{ item }}, site_pool: {{ item }}, State: enable"
loop: "{{ blue_pools }}"
Denis
Про dict и subelements знаю, но не хочу пихать это в dict
Станислав
Хорошо. но потом доступ по ssh зарубится для рута. И так нельзя сделать:
- name: Adding ansible user to docker group
user:
name: '{{ remote_user }}'
groups: docker
append: yes
Т.к. remote_user он не знает, а ansible_user у него root
Станислав
а там дальше будет апдейт sshd конфига. где доступ руту рубят
Станислав
там роль идет на подготовку системы: УЗ, конфиги системы, ПО
Станислав
тут я не спорю
Vladislav 👻
Кто-нибудь в курсе, почему хеш для одного и того же пароля постоянно меняется?
{{ var_password | password_hash('sha512') }}
Fire
Vladislav 👻
один и тот же
Станислав
Vladislav 👻
Станислав
ansible all -i localhost, -m debug -a "msg={{ 'mypassword' | password_hash('sha512', 'mysecretsalt') }}"
Vladislav 👻
и самое веселое, непонятно, но haproxy это понимает как-то в basic auth...
Vladislav 👻
а как тогда haproxy понимает это без знания соли?
Vladislav 👻
или соль присутствует в хеше?
Vladislav 👻
Да, разобрался, соль в хеше, между знаками доллара
Vladislav 👻
странная логика...
Vladislav 👻
AlexD
Vladislav 👻
соль в самом хеше
Vladislav 👻
хотя наверно понедельник утро, поэтому могу негодовать просто так 😬
AlexD
соль в самом хеше
она не в хеше, а рядом в той же строке записи. Индивидуальный salt для каждой записи более секурно нежели один общий для всех записей.
Vladislav 👻
все правильно, но с точки зрения ansible и пароля для haproxy, нужно это фиксировать, ибо идемпотентность
Vladislav 👻
можно разную соль для разных приложений, но когда ты катаешь конфиг для haproxy, делать релоад его из-за новой соли - глупо...
AlexD
Vladislav 👻
можно заранее захешить, да, но тоже выгляждит глупо, на фоне того, что все для этого и так есть в ansible
Vladislav 👻
vault никто не отменял
Anonymous
Коллеги, можете рассказать - а как вы vault используете ?
Что я хочу - чтобы файл с переменными автоматически подцеплялся во все плейбуки
я сделал vars/vault.yml, в котором зашифровал переменные
но он применяется только, если явно указываю в плейбуке vars_files
как сделать, чтобы он автоматом применялся ко всем переменным ?
Lamobot
Anonymous
Положить его в group_vars/all/
не понял
вот смотри у меня сейчас шированный файл выглядит так:
cat vars/vault.yml
$ANSIBLE_VAULT;1.1;AES256
38*
я хочу, чтобы у меня там были шифрованные переменные:
srv-t-cibms1-password: *
srv-t-cibms1-apikey: *
как это сделать ?
Anonymous
хотя бы какие ключевые слова читать.
Valiy
Anonymous
ansible-vault edit vars/vault.yml
Там переменные заданы.
Вопрос - как доставить внутрь плейбука.
Выше советовали group_vars, но я не понимаю, как их туда перенести зашифрованнымт
Aleksandr
гайз, а на хапрокси какую плейбуку лучше взять? с поддержкой acl
Anonymous
Vladislav 👻
Vladislav 👻
Частенько быват глобальные переменные (прокси, ссл или еще что), тогда мы vault файл кладем в группу all, а в нужном месте ссылаемся на эти переменные.
Anonymous
очень похоже, что я банально запутался :)
куда лучше положить vault.yaml, чтобы в плейбуке не писать vars_files ?
Lamobot
Lamobot
Или зашифровать в vars: самого плейбука по одной
Anonymous
правильно понимаю, что я должен в group_vars/all добавить блок
$ANSIBLE_VAULT;1.1;AES256
38*всё_содержимое_файлика.
Lamobot
Lamobot
Если хочешь в all добавлять, то нужно по одной переменной шифровать
Lamobot
https://docs.ansible.com/ansible/latest/user_guide/vault.html#creating-encrypted-variables
Anonymous
Sergey
Max
А как в ansible можно заменить факт? Прст установить факт не могу, надо менять конкретный.
Собсно суть в чём: linux mint заявляет о себе как:
$ lsb_release -a
No LSB modules are available.
Distributor ID: LinuxMint
Description: Linux Mint 19.3 Tricia
Release: 19.3
Codename: tricia
роль написана без учёта такого бреда, с ориентировкой на ванильную убунту, которая заявляет о себе вот так:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.5 LTS
Release: 18.04
Codename: bionic
по причине того, что у меня в парке есть несколько машин со старой ОС (linux mint 18, который на ubuntu 16.04 основан), прст сделать set_fact может поломаться на этих старых ОС. поэтому надо менять только конкретный факт. как придумать некое условие в установке фактов?
или надо как-то в полуавтоматическом режиме собирать факты, на основе собранных фактов делать нужный inventory с машинами на нужной ОС и дальше всем set_fact?
Lamobot
Max
роль приезжает из пакета из репозитория (роль freeipa). не хотелось бы в такое лезть руками.
p.s. понятно, что надо выпилить этот минт нафиг, но нет возможности
Lamobot