manefesto
экранировани обратного слеша
manefesto
например \\ будет правильно \\\\
Даня
парни, подскажите плз. пытаюсь выполнить POST через ансибл, скармливаю приват ключик в json формате, но у меня пропадают знаки + из текста. кто-нибудь сталкивался с таким?
Даня
вытягиваю текст вот так: - name: Importing the private key file contents to variable slurp: src: /var/lib/jenkins/.ssh/id_rsa register: jenkins_private_key_b64 become: true
Даня
POST вот так
Даня
- name: Create jenkins ssh credentials uri: url: 'http://127.0.0.1:8080/credentials/store/system/domain/_/createCredentials' method: POST follow_redirects: all body: | json={ "": "0", "credentials": { "scope": "GLOBAL", "id": "jenkins-ssh-credentials", "username": "jenkins", "password": "", "privateKeySource": { "stapler-class": "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$DirectEntryPrivateKeySource", "privateKey": "{{ jenkins_private_key_b64['content'] | b64decode }}", }, }, "description": "Jenkins SSH private key", "stapler-class": "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey", "$class": "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey } force_basic_auth: yes user: "{{ item.username }}" password: "{{ item.password }}" no_log: false with_items: "{{ jenkins_ansible_user }}"
Даня
при чем такая проблема только с json, вывожу паблик кей через дебаг, с ним все в порядке
Даня
to_json тоже не помогло в данном случае..
Vitaly
А дебаг что говрит?
Даня
Failed to Parse JSON
Даня
нашел 3 ошибки
Даня
щас поправлю
manefesto
криво json
manefesto
{ "": "0", "credentials": { "scope": "GLOBAL", "id": "jenkins-ssh-credentials", "username": "jenkins", "password": "", "privateKeySource": { "stapler-class": "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$DirectEntryPrivateKeySource", "privateKey": "{{ jenkins_private_key_b64['content'] | b64decode }}" } }, "description": "Jenkins SSH private key", "stapler-class": "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey", "$class": "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey" }
manefesto
поправил
manefesto
https://jsonlint.com/ в помощь
Даня
спасибо большое, тоже как раз поправлял
manefesto
проблемы как бы и не было =)
Даня
хм, все равно не могу спарсить
Даня
ладно, ща копну в другую сторону
manefesto
но косяк то выявлен
Даня
он мне все равно сыпет: Error: Parse error on line 10: ... "privateKey": ""-- -- - BEGIN RSA PR ----------------------^ Expecting 'EOF', '}', ':', ',', ']', got 'undefined'
Даня
а
Даня
стоп
Даня
""
Даня
все вроде, надо было внести ключ без кавычек
Даня
т.к. to_json добавляет еще одни
Даня
"privateKey": {{ jenkins_private_key_b64['content'] | b64decode | to_json}}
Fedor
вот кавычки - да. я там с ними намучался как-то.
Даня
осталось дело за малым, поправить синтаксис в json`e и вроде как должен схавать
Nikolay
например \\ будет правильно \\\\
короче история с \ - темная какая-то заменил user: DOMIAN\login на user: login@DOMAIN и получилась такая конструкция: user_dir: "{{ user.split('@')[0] }}"
Alex
в глаза долблюсь, сори
manefesto
Столкнулся с такой задачей, сделал handler - name: obfuscate sssd config shell: echo "{{item.variable}}" | sss_obfuscate -d "{{item.domain}}" -s with_items: - { variable: "{{domain1_password}}", domain: "domain1"} - { variable: "{{domain2_password}}", domain: "domain2"} и при запуске плейбука он мне в открытом виде пишет *_password
manefesto
RUNNING HANDLER [AD : obfuscate sssd config] ************************************************************************************************************************************************** changed: [datanode-10] => (item={u'variable': u'Qwerty1', u'domain': u'domain1'}) changed: [datanode-10] => (item={u'variable': u'Qwerty2', u'domain': u'domain2'})
manefesto
как то можно скрыть ?
Nklya
https://serverfault.com/questions/681832/how-can-i-stop-ansible-from-writing-passwords-to-the-logfiles
manefesto
no_log?
мерси, только что нашел
manefesto
=)
manefesto
Не совсем понял отличия command от shell
Nklya
Constantin
Ребят, а кто-нибудь пробовал Семафор больше чем побаловаться, на реальных проектах?
Fedor
а что за семафор?
Fedor
как называется?)
Fedor
UI? =)
manefesto
Я смотрел на семафор
manefesto
но он вроде не очень жив
manefesto
лучше уж awx
Constantin
UI? =)
https://github.com/ansible-semaphore/semaphore
Constantin
Ребят, есть глупый вопрос. Если на машинах внезапно не оказалось питона, то что вы делаете, чтобы его туда доставить?
Constantin
Что-то такое? tasks: - name: install python 2 raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal)
Denis
Что-то такое? tasks: - name: install python 2 raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal)
ага. Читал как то что этот модуль для подобных целей, но раньше обычно работал с centos, а там python-minimal предустановлен всегда. Поэтому не было надобности его использовать
Constantin
Почти, чистая Ubuntu 16
Славик
там вроде 3-ий питон есть
Denis
Я тоже думал что в убунте пайтон есть.
Denis
Почти, чистая Ubuntu 16
Вообщем попробуй. Может сработает
manefesto
Бывает minimal без python2, поэтому плюнуть и поставить
Nikolay
Подкинуть файл ответов убунте с установкой питона во время установки системы, типа как анаконда на центоси
bebebe
Ребят, а кто-нибудь пробовал Семафор больше чем побаловаться, на реальных проектах?
пробовал, год назад, очень сырой. вплоть до того что не умел нормально параллельные джобы. единственное что подкупило, был rest api над ansible плейбуками (пользователи были номинально, по факту нет) лучше awx использовать
Anonymous
Что-то такое? tasks: - name: install python 2 raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal)
Я бы так сделал, для кроссплатформенности. Мы же можем не знать какая ос там. tasks: - name: install python 2 raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal || yum install -y python2.7)
Fedor
мне кажется, сейчас мало где в интерпрайз ос нету питона
Anonymous
а если apt-get update сразу упадёт? 😉
Ну так в том и смысл. Если упадёт, то выполнится yum
Fedor
таски, кстати, можно выполнять на основе собранных фактов, откуда определять ос и запускать кастомизированные под ос задачи
Fedor
хотя, соберутся ли они без питона
Fedor
можно сделать cat /etc/*-release, оттуда распарсить семейство, и по нему работать
Sergey
Ну так в том и смысл. Если упадёт, то выполнится yum
yum НЕ выполнится, потмоу что для запуска yum НЕ должна выполниться apt install, которая ДОЛЖНА выполниться только тогда, когда ВЫПОЛНИТСЯ apt -y update
bebebe
Все смешалось, люди, кони
Anonymous
можно сделать cat /etc/*-release, оттуда распарсить семейство, и по нему работать
Я изначально в одной из задач так планировал делать, но слишком сложно получается ради простого таска
Fedor
для любого продукта есть требования к ос такой-то версии, и т п. центос - с питоном. деб - с питоном.
Fedor
бсд вроде тоже
Fedor
не помню уже
bebebe
я тут менеджу через ansible около 230 железок с openwrt