Azure 如何使用“除非”检查软件包是否已安装?

Azure 如何使用“除非”检查软件包是否已安装?,azure,puppet,puppet-enterprise,Azure,Puppet,Puppet Enterprise,我已经创建了一个puppet脚本来安装Azure客户端,在使用yum install之前的最后一步中,我想确保以前没有安装该包,以防止重复安装 我的想法是 如果az-help的输出没有给出任何表示没有Azure安装的内容,则执行脚本 如果你们有更好的选择,请指导我,谢谢 我的代码是 #install azure client exec { 'install-azure': command => '/bin/yum install azure-

我已经创建了一个puppet脚本来安装Azure客户端,在使用yum install之前的最后一步中,我想确保以前没有安装该包,以防止重复安装

我的想法是 如果az-help的输出没有给出任何表示没有Azure安装的内容,则执行脚本

如果你们有更好的选择,请指导我,谢谢

我的代码是

#install azure client
        exec { 'install-azure':
        command         => '/bin/yum install azure-cli -y',
        path            => '/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:',
        unless          => 'az --help',
        #require         => Exec['yumrepolist']
        }
代码似乎有问题,我已经使用

puppet agent -t
注意: /Stage[main]/Os\u preparation::Azure\u安装/Exec[yumrepolist]/返回: 已成功执行错误: /Stage[main]/Os\u准备::Azure\u安装/Exec[install Azure]:无法 未评估:找不到命令“az”

有什么想法吗?谢谢

您应该使用软件包资源安装azure cli。此外,还应将其Yum存储库添加为yumrepo资源

尝试下面的方法,它复制了上的说明


您不为此使用包资源的原因是什么?你似乎在重新发明轮子。实际上,我不确定exec或package是否应该使用。因为它是随yum安装而来的。我不懂。如果您想通过yum安装它,那么为什么不适合通过包资源管理它呢?
yumrepo { 'azure-cli':
  descr    => 'Azure CLI',
  baseurl  => 'https://packages.microsoft.com/yumrepos/azure-cli',
  enabled  => 1,
  gpgcheck => 1,
  gpgkey   => 'https://packages.microsoft.com/keys/microsoft.asc',
}

package { 'azure-cli':
  ensure  => installed,
  require => Yumrepo['azure-cli'],
}