Chef:作为ANT脚本的一部分,向Chef客户端提供无密码sudo

时间:2013-12-17 01:18:30

标签: exec chef sudo knife

在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密码。我们能以任何方式实现这一目标吗?

3 个答案:

答案 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身份文件。建议使用基于密钥的身份验证。

http://docs.opscode.com/knife_bootstrap.html

答案 2 :(得分:1)

您需要将当前用户添加到sudoers组,并为该命令提供无密码的sudo访问权限: