#cloud-config hostname: snapshot-ipv4-dhcp-el7 fqdn: snapshot-ipv4-dhcp-el7 manage_etc_hosts: true users: {} runcmd: - | echo "" > /etc/hostname hostname cat > /etc/hosts << EOF 127.0.0.1 snapshot-ipv4-dhcp-el7 localhost localhost.localdomain ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters EOF - | - | echo "Updating system time" systemctl enable --now chronyd /usr/bin/chronyc -a makestep /usr/sbin/hwclock --systohc - | rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm - | # registration_type = 'subscription_manager' echo "##############################################################" echo "################# SUBSCRIPTION MANAGER #######################" echo "##############################################################" echo echo "Starting the subscription-manager registration process" # Set up subscription-manager # Select package manager for the OS (sets the $PKG_MANAGER* variables) if [ -z "$PKG_MANAGER" ]; then if [ -f /etc/os-release ] ; then . /etc/os-release fi if [ "${NAME%.*}" = 'FreeBSD' ]; then PKG_MANAGER='pkg' PKG_MANAGER_INSTALL="${PKG_MANAGER} install -y" PKG_MANAGER_REMOVE="${PKG_MANAGER} delete -y" PKG_MANAGER_UPGRADE="${PKG_MANAGER} install -y" elif [ -f /etc/fedora-release -o -f /etc/redhat-release -o -f /etc/amazon-linux-release -o -f /etc/system-release ]; then PKG_MANAGER='dnf' if [ -f /etc/redhat-release -a "${VERSION_ID%.*}" -le 7 ]; then PKG_MANAGER='yum' elif [ -f /etc/system-release ]; then PKG_MANAGER='yum' fi PKG_MANAGER_INSTALL="${PKG_MANAGER} install -y" PKG_MANAGER_REMOVE="${PKG_MANAGER} remove -y" PKG_MANAGER_UPGRADE="${PKG_MANAGER} upgrade -y" elif [ -f /etc/debian_version ]; then PKG_MANAGER='apt-get' PKG_MANAGER_INSTALL="${PKG_MANAGER} install -y" PKG_MANAGER_REMOVE="${PKG_MANAGER} remove -y" PKG_MANAGER_UPGRADE="${PKG_MANAGER} -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' -o APT::Get::Upgrade-Allow-New='true' upgrade -y" elif [ -f /etc/arch-release ]; then PKG_MANAGER='pacman' PKG_MANAGER_INSTALL="${PKG_MANAGER} --noconfirm -S" PKG_MANAGER_REMOVE="${PKG_MANAGER} --noconfirm -R" PKG_MANAGER_UPGRADE="${PKG_MANAGER} --noconfirm -S" elif [ x$ID = xopensuse-tumbleweed -o x$ID = xsles ]; then PKG_MANAGER='zypper' PKG_MANAGER_INSTALL="${PKG_MANAGER} --non-interactive install --auto-agree-with-licenses" PKG_MANAGER_REMOVE="${PKG_MANAGER} --non-interactive remove" PKG_MANAGER_UPGRADE="${PKG_MANAGER} --non-interactive update" fi fi # Define the path to rhsm.conf RHSM_CFG=/etc/rhsm/rhsm.conf # Prepare subscription-manager if ! [ -x "$(command -v subscription-manager)" ] ; then $PKG_MANAGER_INSTALL subscription-manager else echo "subscription-manager is already installed!" fi # Check if rhsm.conf exists if ! [ -f $RHSM_CFG ] ; then echo "'$RHSM_CFG' not found, cannot configure subscription-manager" exit 1 fi # Configure subscription-manager test -f $RHSM_CFG.bak || cp $RHSM_CFG $RHSM_CFG.bak subscription-manager config \ --server.hostname="subscription.rhsm.redhat.com" \ --server.port="443" \ --server.prefix="/subscription" \ --rhsm.repo_ca_cert="/etc/rhsm/ca/redhat-uep.pem" \ --rhsm.baseurl="https://cdn.redhat.com" # Older versions of subscription manager may not recognize # report_package_profile and package_profile_on_trans options. # So set them separately and redirect out & error to /dev/null # to fail silently. subscription-manager config --rhsm.package_profile_on_trans=1 > /dev/null 2>&1 || true subscription-manager config --rhsm.report_package_profile=1 > /dev/null 2>&1 || true # Configuration for EL6 if grep --quiet full_refresh_on_yum $RHSM_CFG; then sed -i "s/full_refresh_on_yum\s*=.*$/full_refresh_on_yum = 1/g" $RHSM_CFG else full_refresh_config="#config for on-premise management\nfull_refresh_on_yum = 1" sed -i "/baseurl/a $full_refresh_config" $RHSM_CFG fi # Restart yggdrasild if installed and running systemctl try-restart yggdrasil >/dev/null 2>&1 || true # Avoid timeout accessing unreachable repo on air gapped infrastructure, # assuming subscription-manager-syspurpose is installed in custom packages section. if ! rpm --query --quiet subscription-manager-syspurpose ; then $PKG_MANAGER_INSTALL subscription-manager-syspurpose fi if [ -f /usr/sbin/syspurpose ]; then syspurpose set-role "Red Hat Enterprise Linux Server" syspurpose set-usage "Development/Test" syspurpose set-sla "Self-Support" syspurpose add-addons 'first addon' 'second addon' 'third addon' else echo "Syspurpose CLI not found." fi subscription-manager register --name="snapshot-ipv4-dhcp-el7" --org='Org' --activationkey='key' - | - | echo "blacklist amodule" >> /etc/modprobe.d/blacklist.conf - | if [ -f /usr/bin/dnf ]; then dnf -y install puppet else yum -t -y install puppet fi cat > /etc/puppet/puppet.conf << EOF [main] vardir = /var/lib/puppet logdir = /var/log/puppet rundir = /var/run/puppet ssldir = \$vardir/ssl [agent] pluginsync = true report = true certname = snapshot-ipv4-dhcp-el7 EOF puppet_unit=puppet /usr/bin/systemctl list-unit-files | grep -q puppetagent && puppet_unit=puppetagent /usr/bin/systemctl enable ${puppet_unit} # export a custom fact called 'is_installer' to allow detection of the installer environment in Puppet modules export FACTER_is_installer=true # passing a non-existent tag like "no_such_tag" to the puppet agent only initializes the node # You can select specific tag(s) with the "run-puppet-in-installer-tags" parameter # or set a full puppet run by setting "run-puppet-in-installer" = true echo "Performing initial puppet run for --tags no_such_tag" /usr/bin/puppet agent --config /etc/puppet/puppet.conf --onetime --tags no_such_tag --no-daemonize phone_home: url: http://foreman.example.com/unattended/built post: [] tries: 10