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
Vadim
manefesto
no_log?
мерси, только что нашел
manefesto
=)
manefesto
Не совсем понял отличия command от shell
manefesto
Nklya
Constantin
Ребят, а кто-нибудь пробовал Семафор больше чем побаловаться, на реальных проектах?
Fedor
а что за семафор?
Fedor
как называется?)
Fedor
UI? =)
manefesto
Я смотрел на семафор
manefesto
но он вроде не очень жив
manefesto
лучше уж awx
Constantin
UI? =)
https://github.com/ansible-semaphore/semaphore
Constantin
Ребят, есть глупый вопрос.
Если на машинах внезапно не оказалось питона, то что вы делаете, чтобы его туда доставить?
Denis
Constantin
Что-то такое?
tasks:
- name: install python 2
raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal)
Михаил Telsir
Denis
Constantin
Почти, чистая Ubuntu 16
Славик
там вроде 3-ий питон есть
Denis
Я тоже думал что в убунте пайтон есть.
Constantin
manefesto
Бывает minimal без python2, поэтому плюнуть и поставить
Nikolay
Подкинуть файл ответов убунте с установкой питона во время установки системы, типа как анаконда на центоси
Constantin
Sergey
Fedor
мне кажется, сейчас мало где в интерпрайз ос нету питона
Fedor
таски, кстати, можно выполнять на основе собранных фактов, откуда определять ос и запускать кастомизированные под ос задачи
Fedor
хотя, соберутся ли они без питона
Anonymous
Fedor
можно сделать cat /etc/*-release, оттуда распарсить семейство, и по нему работать
bebebe
Все смешалось, люди, кони
Fedor
для любого продукта есть требования к ос такой-то версии, и т п. центос - с питоном. деб - с питоном.
Fedor
бсд вроде тоже
Fedor
не помню уже
bebebe
я тут менеджу через ansible около 230 железок с openwrt