Womchik
ещё две недели и будет 3 группы :)
Sergey
Не рабит такая конструкция
ну я уже понял, что нет исходно нужен list, а я предложил list of lists
Div
добрый день. кто то сталивался с модулем docker_container ?
bebebe
Не рабит такая конструкция
not in groups['opentsdb_servers']|list + groups['name_nodes']|list
Me
not in groups['opentsdb_servers']|list + groups['name_nodes']|list
Вот спасибо, совсем про + забыл host not in groups.opentsdb_servers+groups.name_nodes
Div
я
у меня проблема с ним. ошибка "Error retrieving container list: No JSON object could be decoded"
bebebe
как вариант, если у вас количество групп будет увеличиваться, то создайте meta группу и включите в неё всех child от исключаемых групп типа metagroup: children: openstdb_servers: name_nodes:
Div
какая версия докера?
Client: Version: 18.03.1-ce API version: 1.37 Server: Engine: Version: 18.03.1-ce API version: 1.37 (minimum version 1.12)
Me
Client: Version: 18.03.1-ce API version: 1.37 Server: Engine: Version: 18.03.1-ce API version: 1.37 (minimum version 1.12)
api_version пробывал указывать? права у ансибла трогать докер есть?
Div
api_version пробывал указывать? права у ансибла трогать докер есть?
api указал, virtualenv тоже, по идее все права у ансибля есть т.к. под рутом выполняю. роль запускал и через ansible-playbook и через awx.
bebebe
api указал, virtualenv тоже, по идее все права у ансибля есть т.к. под рутом выполняю. роль запускал и через ansible-playbook и через awx.
у вас rw на доскер сокет должны быть у пользователя из под которого запускается ansible
Div
Покажи таск
docker_container: api_version: "{{ api_version }}" auto_remove: no docker_host: "{{ docker_host }}" name: "{{ container_name }}" hostname: "{{ container_hostname }}" image: "{{ image_name }}" state: started ports: - "{{ ssh_port }}:22" - "{{ http_port }}:80" - "{{ https_port }}:443" restart_policy: "{{ restart_policy }}" restart_retries: 5 memory: 1g
Div
у вас rw на доскер сокет должны быть у пользователя из под которого запускается ansible
у меня ансибль через переменные в инвентори по ssh как рут ходит на сервер. по идее все права есть.
Div
запустите с флагами -vvvv и внимательно смотрите на debug
я через awx в режиме debug вижу такой вывод "exception": " File \"/tmp/ansible_EuCqdo/ansible_modlib.zip/ansible/module_utils/docker_common.py\", line 382, in get_container\n for container in self.containers(all=True):\n File \"/opt/ans/lib/python2.7/site-packages/docker/api/container.py\", line 85, in containers\n res = self._result(self._get(u, params=params), True)\n File \"/opt/ans/lib/python2.7/site-packages/docker/client.py\", line 181, in _result\n return response.json()\n File \"/opt/ans/lib/python2.7/site-packages/requests/models.py\", line 892, in json\n return complexjson.loads(self.text, **kwargs)\n File \"/root/.pyenv/versions/2.7.14/lib/python2.7/json/init.py\", line 339, in loads\n return _default_decoder.decode(s)\n File \"/root/.pyenv/versions/2.7.14/lib/python2.7/json/decoder.py\", line 364, in decode\n obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n File \"/root/.pyenv/versions/2.7.14/lib/python2.7/json/decoder.py\", line 382, in raw_decode\n raise ValueError(\"No JSON object could be decoded\")\n",
bebebe
подозреваю что докер модулю ансила приехал не json, а это означает что по какой-то причине не достучался до докер сокета (который может быть не прокинут и прочее)
bebebe
А в переменной docker_host в плейбуке что?
bebebe
tcp://192.168.0.1:2376
Без сертификатов и СМС?
Div
А в переменной docker_host в плейбуке что?
телнет подтверждает что все доступно
Div
Без сертификатов и СМС?
да. безопасность пока не нужна
Div
Без сертификатов и СМС?
это внутренний проект
Div
устал гуглить...
Sergey
телнет подтверждает что все доступно
у ансибла есть аналог curl. я бы им попробовал запросить что-то простое на порту доскера - сразу всё на свои места встанет
Sergey
можно подробнее?
http://docs.ansible.com/ansible/latest/modules/get_url_module.html
Div
http://docs.ansible.com/ansible/latest/modules/get_url_module.html
а чем это отличается от телнет?
bebebe
Тем что L7 хттп
Tadeusz
Тем что L7 хттп
телнет тоже 7
Sergey
а чем это отличается от телнет?
ты в телнете видел JSON-ответ доскера?
bebebe
вы меня не поняли
bebebe
https://nathanleclaire.com/blog/2015/11/12/using-curl-and-the-unix-socket-to-talk-to-the-docker-api/
bebebe
речь идет о том что бы руками запросить у докера API запрос, можно сделать на telnet и raw писать http запрос, можно с помощью curl, можно хоть с nc
bebebe
https://gist.github.com/nuxlli/7553996
bebebe
дело в том что его нужно сделать
Div
ты в телнете видел JSON-ответ доскера?
я пробовал такой запрос через телнет GET /images/json HTTP/1.0\r\n\r\n но в ответе получаю нечитабелью ересь, которую даже скорировать не могу никуда...
Div
вы HTTP хедер в ответе видите?
я вот такую чушь вижу
bebebe
@Div попробуйте curl -vvvv
bebebe
я вот такую чушь вижу
собственно если такое же видит и ansible, то понятно откуда у него проблемы с декодированием json решите сначала проблему с докер сокетом. а потом уже натравливайте анслибл на него
bebebe
это отдельный чатик. @docker_ru помойму
Div
большое вам человеческое мерси.
Div
докер_ру какой то мертвый...
Aleksey
докер_ру какой то мертвый...
потому что @ru_docker же
Div
чорд... еще раз спасибо
Div
проблема таки была в ансибле
Womchik
и какая там ошибка в конфиге?
Div
вместо параметра tcp://192.168.1.1:2376 в docker_host нужно было использовать unix://var/run/docker.sock
Div
я как дурак ломился по сети
Div
тем не менее спасибо за советы.
Err
В таске меняю директорию с помощью args: chdir, и выполняю команду( command: bundle exec ruby .... ). почему то пишет ошибку, мол нету фаила. pwd указывает правильно, значит дело в приоритетности вызова модулей?
bebebe
вместо параметра tcp://192.168.1.1:2376 в docker_host нужно было использовать unix://var/run/docker.sock
если вы вспомните, я вас сразу спросил, правильно ли смотрит {{ docker_host }} переменная
Sergey
а как правильно руби собирать?
как и любое такое сборное дерьмо - единожды на сервере сборки. на таргет-хост только готовые артефакты (архивы, образы, пакеты). зачем компилятор на продакшне? правильно, чтобы злоумышленнику проще было.
Womchik
если это рельсы, то есть доступ как минимум к базе
bebebe
а как правильно руби собирать?
https://docs.docker.com/develop/develop-images/multistage-build/
bebebe
но это как бэ оффтопик
Womchik
https://docs.docker.com/develop/develop-images/multistage-build/
меня с докером не интересовало :)
Err
Что это?
Err
Кто сталкивался с таким?
Nikita
Кто сталкивался с таким?
Вам нужно получить из фактов белый ip хоста?
Err
Вам нужно получить из фактов белый ip хоста?
Можно так. Хочу получить тот айпи, что я написал в инвентори под [названием группы]. Сейчас я это реализовал созданием отдельной переменной в инвентори. Продублировал айпи в переменную короче.
Tadeusz
Дизайнер, брось эту гадость)
bebebe
если вам надо определить ойпи с которого ваш хост будет виден для других в интернетах, то curl ifconfig.co