Сделайте файл исполняемым с помощью Ansible, затем заставьте Ansible его выполнить - PullRequest
0 голосов
/ 20 февраля 2019

В настоящее время я пишу книгу / роль, в которой я устанавливаю GitLab Runner на сервер.Вот ссылка на инструкции, которым я следую.

Итак, шаги будут выглядеть следующим образом:

  1. Загрузка gitlab-runnerдвоичный файл, вставьте /usr/local/bin/, затем используйте chmod +x, чтобы разрешить его выполнение.

  2. Создайте пользователя «gitlab-runner», создайте ему личный каталог и решите,что он будет использовать /bin/bash, если он хочет выполнить команду

  3. Установите службу и укажите, какой пользователь и какой домашний каталог будет использоваться.

  4. (и 5.) Запустите службу и зарегистрируйте ее (я еще не здесь)

Итак, вот что: Когда я регистрируюсь на удаленном хостечерез Ansible или нет, я не могу войти напрямую как root.Мой пользователь, 'ansible', имеет привилегии sudo, но дело в том, что он не может выполнить команду gitlab-runner, потому что она не найдена (даже если я chmod'd + x файл, когда я его скопировал)

Когда я вошел на удаленный сервер как «ansible», команда не была найдена, но когда я попытался запустить ее с помощью sudo, она вернула мне:

Fatal: запустите команду от имени пользователя root

Я еще не знаком с Ansible, но вот что я получил:

- name: copy gitlab-runner binary from local to remote host(s)
  copy:
    src: gitlab-runner
    dest: /usr/local/bin/gitlab-runner
    mode: +x
  register: binary

- name: Create a gitlab-runner user
  user:
    name: 'gitlab-runner'
    comment: 'GitLab Runner'
    create_home: yes
    shell: /bin/bash

- name: Install gitlab-runner
  become: yes
  become_user: root
  shell: gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
  args:
    executable: /bin/bash

Я использовал для запуска команды с command сервис, но мне вернули странные вещи типа no such file or directory.Теперь он возвращает command not found, что немного лучше.

Первый вопрос: правильно ли я делаю копию?Я имею в виду, что сама копия работает гладко, но я делаю это правильно, установив в нее mode: +x, или я должен добавить режим после копирования?

Второй вопрос: каким будет правильный способ статьroot в моей ситуации?

Заранее спасибо.

1 Ответ

0 голосов
/ 20 февраля 2019

Используйте путь к gitlab-runner и используйте командный модуль, оболочка не нужна.

command: /usr/local/bin/gitlab-runner ...

Первый вопрос: правильно ли я делаю копию?

Взгляните на dest: / usr / local / bin / gitlab-runner

Второй вопрос: каким будет правильный путьстать корнем в моей ситуации?

Тот, который вы используете.Вы можете проверить самостоятельно

- name: Who am I ?                                                                       
  become: yes                                                                            
  become_user: root                                                                      
  command: whoami                                                                        
  register: result                                                                       
- debug: var=result.stdout
...