使用Ansible使文件可执行,然后使Ansible执行

时间:2019-02-20 13:48:46

标签: ansible gitlab gitlab-ci-runner

我目前正在编写剧本/角色,在服务器上安装GitLab Runner。这是我遵循的说明的the link

因此,步骤如下:

  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运行它时,它返回了我:

  

致命:请以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来正确执行操作的吗?还是应该在副本之后添加模式?

第二个问题:在我的情况下扎根的正确方法是什么?

谢谢。

1 个答案:

答案 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