/** * Returns a string for checking whether the given executable is available, * and installing it if necessary. * <p/> * Uses {@link #installPackage} and accepts the same flags e.g. for apt, yum, rpm. */ public static String installExecutable(Map<?,?> flags, String executable) { return onlyIfExecutableMissing(executable, installPackage(flags, executable)); }
public static String installPackage(String packageDefaultName) { return installPackage(MutableMap.of(), packageDefaultName); } /**
@Override public void install() { List<String> urls = resolver.getTargets(); String saveAs = resolver.getFilename(); List<String> commands = new LinkedList<String>(); commands.add(BashCommands.INSTALL_TAR); commands.add(BashCommands.INSTALL_CURL); commands.add("echo installing extra packages"); commands.add(installPackage(ImmutableMap.of("yum", "libgcc_s.so.1"), null)); commands.add(installPackage(ImmutableMap.of("yum", "libaio.so.1 libncurses.so.5", "apt", "libaio1 libaio-dev"), null)); // addresses https://issues.apache.org/jira/browse/BROOKLYN-300 commands.add(installPackage(ImmutableMap.of("yum", "perl", "apt", "perl"), null)); commands.add(installPackage(ImmutableMap.of("yum", "perl-Data-Dumper", "apt", "libdata-dumper-concise-perl"), null)); // these deps are only needed on some OS versions but others don't need them commands.add(installPackage(ImmutableMap.of("yum", "libaio", "apt", "ia32-libs"), null)); commands.add("echo finished installing extra packages"); commands.addAll(commandsToDownloadUrlsAs(urls, saveAs)); commands.add(format("tar xfvz %s", saveAs)); newScript(INSTALLING).body.append(commands).execute(); }
@Override public void install() { List<String> urls = resolver.getTargets(); String saveAs = resolver.getFilename(); List<String> commands = new LinkedList<String>(); commands.add(BashCommands.INSTALL_TAR); commands.add(BashCommands.INSTALL_CURL); commands.add("echo installing extra packages"); commands.add(installPackage(ImmutableMap.of("yum", "libgcc_s.so.1"), null)); commands.add(installPackage(ImmutableMap.of("yum", "libaio.so.1 libncurses.so.5", "apt", "libaio1 libaio-dev"), null)); // these deps are needed on some OS versions but others don't need them so ignore failures (ok(...)) commands.add(ok(installPackage(ImmutableMap.of("yum", "libaio", "apt", "ia32-libs"), null))); commands.add("echo finished installing extra packages"); commands.addAll(commandsToDownloadUrlsAs(urls, saveAs)); commands.add(format("tar xfvz %s", saveAs)); newScript(INSTALLING).body.append(commands).execute(); }
@Override public void run() { assertExecSsh(server, ImmutableList.of(BashCommands.installPackage("curl"), "netstat -antp", "curl -k --retry 3 "+url)); }}); }
@Override public void install() { List<String> commands = Lists.newLinkedList(); commands.addAll(BashCommands.commandsToDownloadUrlsAs(resolver.getTargets(), getCalicoCommand())); commands.add("chmod 755 " + getCalicoCommand()); commands.add(BashCommands.installPackage("ipset")); commands.add(sudo("modprobe ip6_tables")); commands.add(sudo("modprobe xt_set")); newScript(INSTALLING) .body.append(commands) .execute(); }
.add("export JAVA_HOME=$(/usr/libexec/java_home)") .add("cd " + getInstallDir()) .add(BashCommands.installPackage(ImmutableMap.of("brew", "automake"), "make")) .add(BashCommands.installPackage(ImmutableMap.of("brew", "libtool"), "libtool")) .add(BashCommands.installPackage(ImmutableMap.of("brew", "pkg-config"), "pkg-config")) .add(BashCommands.installPackage(ImmutableMap.of("brew", "zeromq"), "zeromq")) .add("git clone https://github.com/asmaier/jzmq") .add("cd jzmq")
@Override public void install() { List<String> urls = resolver.getTargets(); String saveAs = resolver.getFilename(); ImmutableList.Builder<String> commands= ImmutableList.<String> builder(); if (!getLocation().getOsDetails().isMac()) { commands.add(BashCommands.installPackage(ImmutableMap.of( "yum", "libuuid-devel", "apt", "build-essential uuid-dev pkg-config libtool automake"), "libuuid-devel")); commands.add(BashCommands.ifExecutableElse0("yum", BashCommands.sudo("yum -y groupinstall 'Development Tools'"))); } commands.add(BashCommands.installPackage(ImmutableMap.of("yum", "git"), "git")) .add(BashCommands.INSTALL_UNZIP) .addAll(installNativeDependencies()) .addAll(BashCommands.commandsToDownloadUrlsAs(urls, saveAs)) .add("unzip " + saveAs) .add("mkdir -p " + getLocalDir()) .add("chmod 777 " + getLocalDir()); // FIXME newScript(INSTALLING) .body.append(commands.build()) .gatherOutput() .execute(); }
@Override public void install() { String fqdn = String.format("%s-%s.%s", entity.getConfig(AmbariCluster.SERVER_HOST_GROUP).toLowerCase(), entity.getId().toLowerCase(), entity.getConfig(AmbariCluster.DOMAIN_NAME)); getEntity().setFqdn(fqdn); ImmutableList<String> commands = ImmutableList.<String>builder() .add(ambariInstallHelper.installAmbariRequirements(getMachine())) .addAll(BashCommands.setHostname(fqdn)) .add(installPackage("ambari-server")) .build(); newScript(INSTALLING).body .append(commands) .failOnNonZeroResultCode() .execute(); }
/** * Returns the command that saves iptables rules on file. * * @return Returns the command that saves iptables rules on file. * */ public static String saveIptablesRules() { return alternatives(sudo("service iptables save"), chain(installPackage("iptables-persistent"), sudo("/etc/init.d/iptables-persistent save"))); }
.add(ifExecutableElse0("yum", getYumRepository())) .add(ifExecutableElse0("zypper", getZypperRepository())) .add(installPackage( // NOTE only 'port' states the version of Erlang used, maybe remove this constraint? ImmutableMap.of( "port", "erlang@"+getErlangVersion()+"+ssl"),
new Object[] { dockerVersion, ubuntuVersion, dockerRepoName, repositoryVersionName }); return chainGroup( installPackage("apt-transport-https"), "echo 'deb https://apt.dockerproject.org/repo " + dockerRepoName + " main' | " + sudo("tee -a /etc/apt/sources.list.d/docker.list"), sudo("apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D"), installPackage("docker-engine=" + repositoryVersionName));
@Override public void install() { String parentFQDN = entity.getParent() instanceof AmbariServer ? ((AmbariServer) entity.getParent()).getFqdn() : ""; Entity parentHostGroup = Iterables.getFirst( Iterables.filter(Entities.ancestors(entity), AmbariHostGroup.class), entity); String fqdn = parentFQDN.isEmpty() ? String.format("%s-%s.%s", parentHostGroup.getDisplayName().toLowerCase(), entity.getId().toLowerCase(), entity.getConfig(AmbariCluster.DOMAIN_NAME)) : parentFQDN; getEntity().setFqdn(fqdn); ImmutableList<String> commands = ImmutableList.<String>builder() .add(defaultAmbariInstallHelper.installAmbariRequirements(getMachine())) .addAll(BashCommands.setHostname(fqdn)) .add(installPackage("ambari-agent")) .add(BashCommands.appendToEtcHosts( getParentAmbariCluster().getMasterAmbariServer().sensors().get(Attributes.SUBNET_ADDRESS), getEntity().getAmbariServerFQDN())) .build(); newScript(INSTALLING).body .append(commands) .failOnNonZeroResultCode() .execute(); }
cmds.add(BashCommands.INSTALL_TAR); cmds.add(BashCommands.alternatives( BashCommands.ifExecutableElse0("apt-get", BashCommands.installPackage("build-essential")), BashCommands.ifExecutableElse0("yum", BashCommands.sudo("yum -y --nogpgcheck groupinstall \"Development Tools\"")))); cmds.add(BashCommands.installPackage(installGccPackageFlags, "nginx-prerequisites-gcc")); cmds.add(BashCommands.installPackage(installMakePackageFlags, "nginx-prerequisites-make")); cmds.add(BashCommands.installPackage(installPackageFlags, "nginx-prerequisites")); cmds.addAll(BashCommands.commandsToDownloadUrlsAs(nginxUrls, nginxSaveAs));
@Override public void install() { LOG.info("Installing Node.JS {}", getVersion()); List<String> commands = MutableList.<String>builder() .add(BashCommands.INSTALL_CURL) .add(BashCommands.ifExecutableElse0("apt-get", BashCommands.chain( BashCommands.installPackage("software-properties-common python-software-properties python g++ make"), BashCommands.sudo("add-apt-repository ppa:chris-lea/node.js")))) .add(BashCommands.installPackage(MutableMap.of("yum", "git nodejs npm", "apt", "git-core nodejs npm"), null)) .add("mkdir -p \"$HOME/.npm\"") .add(BashCommands.sudo("npm install -g n")) .add(BashCommands.sudo("n " + getVersion())) .build(); newScript(INSTALLING) .body.append(commands) .execute(); }
List<String> commands = MutableList.of(); if ("ubuntu".equalsIgnoreCase(osDetails.getName())) { commands.add(installPackage("software-properties-common linux-generic-lts-vivid")); executeKernelInstallation(commands); } else if ("centos".equalsIgnoreCase(osDetails.getName())) { // should work for RHEL also? commands.add(ifExecutableElse1("yum", useYum(osVersion, arch, getEpelRelease()))); commands.add(installPackage(ImmutableMap.of("yum", "docker-io"), null)); commands.add(sudo(format("curl https://get.docker.com/builds/Linux/x86_64/docker-%s -o /usr/bin/docker", getVersion()))); } else {
public static final String INSTALL_ZIP = installExecutable("zip"); public static final String INSTALL_UNZIP = alternatives(installExecutable("unzip"), installExecutable("zip")); public static final String INSTALL_SYSSTAT = installPackage(ImmutableMap.of("onlyifmissing", "iostat"), "sysstat");
.append("which pg_ctl") .appendAll(Iterables.transform(pgctlLocations, StringFunctions.formatter("test -x %s/pg_ctl"))) .append(installPackage(ImmutableMap.of( "yum", "postgresql"+shortVersion+" postgresql"+shortVersion+"-server", "apt", "postgresql-"+majorMinorVersion,
@Override protected String startProcessesAtMachine(Supplier<MachineLocation> machineS) { DynamicTasks.queue( SshEffectorTasks.ssh( "mkdir "+dir(entity), "cd "+dir(entity), BashCommands.downloadToStdout(downloadUrl(entity, isLocalhost(machineS)))+" | tar xvz" ).summary("download mysql").returning(SshTasks.returningStdoutLoggingInfo(log, true))); if (isLinux(machineS)) { DynamicTasks.queue(SshEffectorTasks.ssh(BashCommands.installPackage("libaio1"))); } DynamicTasks.queue( SshEffectorTasks.put(".my.cnf") .contents(String.format("[mysqld]\nbasedir=%s/%s\n", dir(entity), installDir(entity, isLocalhost(machineS)))), SshEffectorTasks.ssh( "cd "+dir(entity)+"/*", "./scripts/mysql_install_db", "./support-files/mysql.server start > out.log 2> err.log < /dev/null" ).summary("setup and run mysql").returning(SshTasks.returningStdoutLoggingInfo(log, true))); return "submitted start"; } @Override