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

使用Ansible使文件可执行,然后使Ansible执行它,ansible,gitlab,gitlab-ci-runner,Ansible,Gitlab,Gitlab Ci Runner,我目前正在编写一个剧本/角色,在服务器上安装GitLab Runner。以下是我遵循的说明 因此,步骤如下所示: 下载gitlab runnerbinary,放入/usr/local/bin/,然后使用chmod+x来执行它 创建一个gitlab runner用户,为他创建一个个人目录,并决定如果他想运行命令,他将使用/bin/bash 安装服务并指定将使用哪个用户和哪个主目录 五,。运行服务并注册我还没到 所以,这里有一些事情:当我通过Ansible或not登录到远程主机时,我不能直接以roo

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

因此,步骤如下所示:

下载gitlab runnerbinary,放入/usr/local/bin/,然后使用chmod+x来执行它

创建一个gitlab runner用户,为他创建一个个人目录,并决定如果他想运行命令,他将使用/bin/bash

安装服务并指定将使用哪个用户和哪个主目录

五,。运行服务并注册我还没到

所以,这里有一些事情:当我通过Ansible或not登录到远程主机时,我不能直接以root用户身份登录。我的用户“ansible”拥有sudo权限,但问题是他似乎无法运行gitlab runner命令,因为即使我在复制文件时chmod了+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
我曾经使用命令服务运行该命令,但它返回了一些奇怪的东西,比如没有这样的文件或目录。现在它返回命令notfound,这稍微好一点

第一个问题:我做得对吗?我的意思是,拷贝本身运行平稳,但我在其中设置mode:+x是正确的,还是应该在拷贝之后添加mode

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


提前感谢。

使用gitlab runner的路径并使用命令模块,不需要shell

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

谢谢你的回答!但是,当我切换到root时,我不需要给Ansible root密码吗?这和我用的ansible\u Been\u密码不一样,是吗?输出正在运行-名称:我是谁?它。。。有效,我的意思是,我得到根作为一个反应,让我提醒验证你的反应,但。。。怎样当我每天都需要根密码时,为什么我不需要指定它呢?你在问题中说:我的用户“ansible”拥有sudo权限……哦,我明白了。谢谢