我目前正在编写剧本/角色,在服务器上安装GitLab Runner。这是我遵循的说明的the link。
因此,步骤如下:
下载gitlab-runner
二进制文件,放入/usr/local/bin/
,然后使用chmod +x
使其执行。
创建一个“ gitlab-runner”用户,创建一个个人目录,并决定如果他要运行命令,他将使用/bin/bash
安装服务并指定要使用的用户和主目录。
(和5.)运行服务,并注册它(我还没有在这里)
所以,这是事情:当我通过或不通过Ansible登录到远程主机时,我无法直接以root用户身份登录。我的用户“ ansible”具有sudo权限,但事实是,它似乎无法运行gitlab-runner
命令,因为找不到该命令(即使我在复制时对文件进行了chmod'd + x它)
当我以“ ansible”身份登录到远程服务器时,找不到命令,但是当我尝试使用sudo运行它时,它返回了我:
致命:请以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
来正确执行操作的吗?还是应该在副本之后添加模式?
第二个问题:在我的情况下扎根的正确方法是什么?
谢谢。
答案 0 :(得分:1)
使用gitlab-runner的路径并使用命令模块,不需要shell。
command: /usr/local/bin/gitlab-runner ...
第一个问题:我在复印吗?
看看目标:/ usr / local / bin / gitlab-runner
第二个问题:在我的情况下扎根的正确方法是什么?
您使用的那个。您可能需要自己检查
- name: Who am I ?
become: yes
become_user: root
command: whoami
register: result
- debug: var=result.stdout