1

在 Chef 工作站上,我使用命令 -

    knife ssh 'name:myserver.org.com' -x myUserName -P myClearTextPassword  "sudo chef-client"

这工作正常,提示输入我的 sudo 密码并在目标厨师节点上执行食谱。到目前为止,一切都很好。

现在,我正在尝试执行此操作,作为在 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 密码。我们有什么办法可以做到这一点?

4

3 回答 3

2

您需要在/etc/sudoers文件中为用户添加一个条目以不提示输入密码

您需要添加一个类似于下面的条目/etc/sudoers

<username> ALL=(ALL) NOPASSWD: ALL

您可以将此行添加到/etc/sudoers使用厨师bash资源或execute资源

于 2013-12-22T07:28:19.857 回答
1

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

于 2013-12-19T18:54:59.417 回答
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

于 2013-12-17T22:03:13.823 回答