Ansible:'shell' 未执行

Ansible: 'shell' not executing

我正在尝试 运行 shell 命令来安装从我的本地 Artifactory 存储库下载的包,因为我无法直接从 Internet 下载它。

当我运行直接在节点上执行命令时

rpm -ivh kubectl-1.1.1.x86_64.rpm --nodigest --nofiledigest

效果很好。

然后将 Ansible playbook 原样放入

- name: Install Kubectl
  shell: rpm -ivh kubectl-1.1.1.x86_64.rpm --nodigest --nofiledigest

没有任何反应。

它没有错误..它只是没有安装。

我也尝试了 commandansible.builtin.shell 模块,但没有任何效果。

请问有办法吗?

尝试使用 command 模块并注册输出 我用它通过 pecl 在 linux

上为 oracle 数据库安装 oci8

你的问题有不同的主题。

关于

to install a package downloaded from my local Artifactory repository, as I don't have access to download it straight from the internet.

您可以使用不同的方法。

1.直接下载

- name: Make sure package becomes installed from internal repository
  yum:
    name: https://{{ REPOSITORY_URL }}/artifactory/kube/kubectl-{{ KUBE_VERSION }}.x86_64.rpm
    state: present

2。配置本地存储库

下一个是提供一个.repo模板文件如

[KUBE]
name = Kubectl - $basearch
baseurl = https://{{ REPOSITORY_URL }}/artifactory/kube/
username = {{ API_USER }}
password = {{ API_KEY }}
sslverify = 1
enabled = 1
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-KUBE

并执行

- name: Make sure package becomes installed from internal repository
  yum:
    name: kubectl
    state: present

这是可能的,因为如果配置正确,JFrog Artifactory 可以提供本地 RPM 存储库。有关更多信息,请研究那里的文档,因为它几乎只与正确配置有关。

关于

Nothing happens. It doesn't error.. It just doesn't install.

您可以使用多个任务来拆分您的步骤,使它们幂等并更好地了解它们的工作方式。

3。 shellrpmdebug

- name: Make sure destination folder for package download (/opt/packages) exists
  file:
    path: "/opt/packages/"
    state: directory

- name: Download RPM to remote hosts
  get_url:
    url: "https://{{ REPOSTORY_URL }}/artifactory/kube/kubectl-{{ KUBE_VERSION }}.x86_64.rpm"
    dest: "/opt/packages/kubectl-{{ KUBE_VERSION }}.x86_64.rpm"
 
- name: Check package content
  shell:
    cmd: "rpm -qlp /opt/packages/kubectl-{{ KUBE_VERSION }}.x86_64.rpm"
  register: rpm_qlp

- name: STDOUT rpm_qlp
  debug: 
    msg: "{{ rpm_qlp.stdout.split('\n')[:-1] }}"

- name: Install RPM using 'command: rpm -ivh'
  shell:
    cmd: "rpm -ivh /opt/packages/kubectl-{{ KUBE_VERSION }}.x86_64.rpm"
  register: rpm_ivh

- name: STDOUT rpm_ivh
  debug: 
    msg: "{{ rpm_ivh.stdout.split('\n')[:-1] }}"

取决于 RPM 包、环境和配置,所有这些都可能正常工作。