java - CFEngine 3.5 Oracle JDK promise

标签 java cfengine

这里是 CFEngine 3 新手。

我想在 Ubuntu 系统上安装 Oracle JDK,我应该如何在 CFEngine 中编写脚本?

我可以使用 webupd8team 提供的 PPA 在 shell 中做这样的事情:

add-apt-repository ppa:webupd8team/java
apt-get update

echo "Installing JDK 7..."
echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections
echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections
apt-get install -y oracle-java7-installer

我完全迷失了在 CFEngine 中做这件事。到目前为止,我有:

body common control {
    inputs => { "$(sys.libdir)/stdlib.cf" };
    bundlesequence => { "manage_properties", 
                        "manage_jdk"};
}

bundle agent manage_properties {
    vars:
        "prop_pkgs" slist => {"python-software-properties", "software-properties-common"};
        "cmds"      slist => {  "/usr/bin/add-apt-repository ppa:webupd8team/java",
                                "/bin/echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections", 
                                "/bin/echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections",
                                "/usr/bin/apt-get update" };

    methods:
        "$(prop_pkgs)" 
            handle => "manage_properties",  
            comment => "Make sure required properties packages are installed",
            usebundle => package_latest("$(prop_pkgs)");

    commands:
        "$(cmds)"
            comment => "Firing preinstall commands for JDK";
}

bundle agent manage_jdk {
    methods:
        "JDK" 
            handle => "manage_jdk",
            comment => "Make sure Java is installed",
            usebundle => package_latest("oracle-java7-installer");
}

但 promise 失败并出现以下错误:

2014-06-30T14:11:18+0000    error: /default/manage_jdk/methods/'JDK'/default/package_latest/packages/'oracle-java7-installer'[0]: Finished command related to promiser 'oracle-java7-installer' -- an error occurred, returned 100
2014-06-30T14:11:18+0000    error: /default/manage_jdk/methods/'JDK'/default/package_latest/packages/'oracle-java7-installer'[0]: Bulk package schedule execution failed somewhere - unknown outcome for 'oracle-java7-installer'

将不胜感激任何指针。谢谢

最佳答案

我在您的政策中看到的一件事是您正在运行一些需要 shell 的命令(您的管道命令)并且您的命令 promise 未包含在任何 shell 中。

命令: “/bin/echo 'Hello World' | grep Hello” 包含 => in_shell;

此外,您似乎对您的预命令采取了非常命令式的观点。 CFEngine 通常每 5 分钟运行一次策略。我会更多地关注在必要时执行必要的操作,并尝试关注状态而不是行动。

例如,您无条件地运行 apt-add-repository。考虑在什么条件下您实际需要执行命令。

关于java - CFEngine 3.5 Oracle JDK promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24492765/

相关文章:

java - 从 intelliJ 中的 libgdx 项目生成可运行的 .jar 文件

java - 为什么 Swing 里的Container里有太多的分层?

linux - 自定义 CFEngine3 临时下载文件位置

linux - CFEngine 上的主机组

java - @DataJpaTest 使用存储库保存实体,无法使用 JdbcTemplate 检索数据

java - 将ArrayList数据以给定格式存储到Object中

ubuntu - CFEngine 策略未在 Ubuntu 节点上执行

cfengine - 添加 Promise 时使用 "ifvarclass => ' class '"or "class::"符号有什么区别吗?

java - 使用 Java 解析包含汇编语言的文件的最佳方法是什么?

svn - 帮我论证为什么系统构建工具不应该自动执行 SVN checkin