Ansible特权升级-成为

时间:2019-10-12 18:41:54

标签: ansible command-line-interface ansible-2.x

从前(我认为在1.9版之前),我们可以在命令行中将 -s 用于sudo。现在不起作用。我在Ubuntu 18.04上使用2.85版。

Public Class MyUserControl Public Event MyErrorEvent(Ex as Exception) Public Sub RaiseAnErrorSub(Ex as Exception) RaiseEvent MyErrorEvent(Ex) End Sub End Class Public Module Public Sub DoSomething() 'Performs an operation 'An Error could happen here 'Need to raise the usercontrol's event at this point.... RaiseAnErrorSub(Ex) 'How can this call the usercontrol of this module? End Sub End Module -这会导致错误,但没有特权,而是$ ansible all -m apt -a “name=httpd state=latest”

ERROR! Extraneous options or arguments-这曾经很久了。同样,不是$ ansible -s all -m apt -a “name=httpd state=latest”尝试了-s-b-都给出了-错误!无关的选项或参数

也尝试了--become-同样的错误

此命令行语法是否错误-所有这些随时间变化了吗

我们该如何解决-仅使用剧本?

更新1
报价问题副本从ms单词中粘贴-单词以某种方式将其转换为--就是这种转换的过程。因此,只需使用记事本即可。

现在用--become-user=root“ ”选项替换了" "。 尝试了它进一步
 -b

但是失败:     [警告]:找不到合适的人选。改用apt-get

ansible -b all -m apt -a "name=httpd state=latest"

不确定此错误的含义-“安装'httpd'失败:E:包'httpd'没有候选安装程序”。目标计算机是ubuntu 18.04

此命令有效
apache2(对于debian)与-b(对于sudo):
x.x.x.x | FAILED! => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "cache_update_time": 1570925983, "cache_updated": false, "changed": false, "msg": "'/usr/bin/apt-get -y -o \"Dpkg::Options::=--force-confdef\" -o \"Dpkg::Options::=--force-confold\" install 'httpd'' failed: E: Package 'httpd' has no installation candidate\n", "rc": 100, ...

3 个答案:

答案 0 :(得分:2)

问题在于,Ubuntu没有名为httpd的程序包,该程序包在以下错误消息中进行了说明:failed: E: Package 'httpd' has no installation candidate

Red Hat发行版家族(RHEL,CentOS和Fedora)将其称为httpd,因为从技术上讲,这就是upstream project name is,即Debian发行版家族(Ubuntu属于其后代)之所以将其称为apache2是因为在LAMP堆栈的鼎盛时期,httpd服务通常被简称为“ Apache”,而我们目前的主要版本为2。

答案 1 :(得分:1)

我认为您只需将引号替换为简单的双引号或单引号即可。

ansible all -m apt -a "name=httpd state=latest"

ansible all -m apt -a 'name=httpd state=latest'

您的shell可能无法识别您正在使用的打开/关闭引号,因此将“name=httpd作为-a选项的参数,并且不知道如何处理{ {1}}。

答案 2 :(得分:1)

如上所述,httpd在Ubuntu中称为apache2,因此您可以使用以下命令。

ansible all -m apt -a "name=apache2 state=latest"