在Chef工作站上,我使用命令 -
knife ssh 'name:myserver.org.com' -x myUserName -P myClearTextPassword "sudo chef-client"
这样可以正常工作,提示输入我的sudo密码并在目标Chef节点上执行cookbook。到目前为止一切都很好。
现在,我正在尝试这样做,作为在Windows系统上运行的ANT脚本中的Jenkins作业中的构建操作的一部分。 ANT脚本如下 -
<project name="MyProject" default="init" basedir=".">
<target name="init">
<property name="mypassword" value="myClearTextPassword" />
<echo message="Executing the knife script"/>
<exec executable="cmd" failonerror="true" inputstring="${mypassword}">
<arg line="/c knife ssh name:myserver.org.com -x myUserName -P myClearTextPassword sudo chef-client" />
</exec>
</target>
ANT脚本在执行时会等待SUDO密码 -
C:\chef-repo>ant
Buildfile: C:\chef-repo\build.xml
init:
[echo] Executing the knife script
[exec] cwllx0001.hq.target.com knife sudo password:
我的目标是执行此ANT脚本,使其不会等待sudo密码。我们能以任何方式实现这一目标吗?
答案 0 :(得分:2)
您需要在/etc/sudoers
文件中为用户添加条目,以便不提示输入密码
您需要在/etc/sudoers
<username> ALL=(ALL) NOPASSWD: ALL
您可以使用主厨/etc/sudoers
资源或bash
资源
execute
答案 1 :(得分:1)
试试这个。
--use-sudo-password
Indicates that a bootstrap operation is done using sudo, with the password specified by the -P (or --ssh-password) option.
更好的方法是
-i IDENTITY_FILE, --identity-file IDENTITY_FILE
用于身份验证的SSH身份文件。建议使用基于密钥的身份验证。
答案 2 :(得分:1)
您需要将当前用户添加到sudoers组,并为该命令提供无密码的sudo访问权限: