forked from ungleich-public/cdist
Merge branch 'type-upgrade-packages' of https://github.com/jimenezrick/cdist
This commit is contained in:
commit
1d67aef811
12 changed files with 247 additions and 10 deletions
|
@ -5,7 +5,7 @@ Steven Armstrong <steven-cdist--@--armstrong.cc>
|
||||||
|
|
||||||
NAME
|
NAME
|
||||||
----
|
----
|
||||||
cdist-type__apt_update_index - update apt's package index
|
cdist-type__apt_update_index - Update apt's package index
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# __package is an abstract type which dispatches to the lower level
|
# __package is an abstract type which dispatches to the lower level
|
||||||
# __package_$name types which do the actual interaction with the packaging
|
# __package_$type types which do the actual interaction with the packaging
|
||||||
# system.
|
# system.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
49
cdist/conf/type/__package_update_index/gencode-remote
Executable file
49
cdist/conf/type/__package_update_index/gencode-remote
Executable file
|
@ -0,0 +1,49 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 2014 Ricardo Catalinas Jiménez (jimenezrick at gmail.com)
|
||||||
|
#
|
||||||
|
# This file is part of cdist.
|
||||||
|
#
|
||||||
|
# cdist is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# cdist is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Update the package index with the appropriate package manager
|
||||||
|
#
|
||||||
|
|
||||||
|
type="$__object/parameter/type"
|
||||||
|
if [ -f "$type" ]; then
|
||||||
|
type="$(cat "$type")"
|
||||||
|
else
|
||||||
|
# By default determine package manager based on operating system
|
||||||
|
os="$(cat "$__global/explorer/os")"
|
||||||
|
case "$os" in
|
||||||
|
amazon|centos|fedora|redhat) type="yum" ;;
|
||||||
|
debian|ubuntu) type="apt" ;;
|
||||||
|
archlinux) type="pacman" ;;
|
||||||
|
*)
|
||||||
|
echo "Don't know how to manage packages on: $os" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$type" in
|
||||||
|
yum) ;;
|
||||||
|
apt) echo "apt-get update" ;;
|
||||||
|
pacman) echo "pacman --sync --refresh" ;;
|
||||||
|
*)
|
||||||
|
echo "Don't know how to manage packages on: $os" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
52
cdist/conf/type/__package_update_index/man.text
Normal file
52
cdist/conf/type/__package_update_index/man.text
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
cdist-type__package_update_index(7)
|
||||||
|
===================================
|
||||||
|
Ricardo Catalinas Jiménez <jimenezrick--@--gmail.com>
|
||||||
|
|
||||||
|
|
||||||
|
NAME
|
||||||
|
----
|
||||||
|
cdist-type__package_update_index - Update the package index
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
This cdist type allows you to update the package index on the target.
|
||||||
|
It will automatically use the appropriate package manager.
|
||||||
|
|
||||||
|
|
||||||
|
REQUIRED PARAMETERS
|
||||||
|
-------------------
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
OPTIONAL PARAMETERS
|
||||||
|
-------------------
|
||||||
|
type::
|
||||||
|
The package manager to use. Default is determined based on the $os
|
||||||
|
explorer variable.
|
||||||
|
e.g. apt for Debian
|
||||||
|
yum for Red Hat
|
||||||
|
pacman for Arch Linux
|
||||||
|
|
||||||
|
|
||||||
|
EXAMPLES
|
||||||
|
--------
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
# Update the package index on the target
|
||||||
|
__package_update_index
|
||||||
|
|
||||||
|
# Force use of a specific package manager
|
||||||
|
__package_update_index --type apt
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
- cdist-type(7)
|
||||||
|
|
||||||
|
|
||||||
|
COPYING
|
||||||
|
-------
|
||||||
|
Copyright \(C) 2014 Ricardo Catalinas Jiménez. Free use of this software is
|
||||||
|
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
|
@ -0,0 +1 @@
|
||||||
|
type
|
0
cdist/conf/type/__package_update_index/singleton
Normal file
0
cdist/conf/type/__package_update_index/singleton
Normal file
59
cdist/conf/type/__package_upgrade_all/gencode-remote
Executable file
59
cdist/conf/type/__package_upgrade_all/gencode-remote
Executable file
|
@ -0,0 +1,59 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 2014 Ricardo Catalinas Jiménez (jimenezrick at gmail.com)
|
||||||
|
#
|
||||||
|
# This file is part of cdist.
|
||||||
|
#
|
||||||
|
# cdist is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# cdist is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Upgrade all the already installed packages with the appropriate package
|
||||||
|
# manager
|
||||||
|
#
|
||||||
|
|
||||||
|
type="$__object/parameter/type"
|
||||||
|
if [ -f "$type" ]; then
|
||||||
|
type="$(cat "$type")"
|
||||||
|
else
|
||||||
|
# By default determine package manager based on operating system
|
||||||
|
os="$(cat "$__global/explorer/os")"
|
||||||
|
case "$os" in
|
||||||
|
amazon|centos|fedora|redhat) type="yum" ;;
|
||||||
|
debian|ubuntu) type="apt" ;;
|
||||||
|
archlinux) type="pacman" ;;
|
||||||
|
*)
|
||||||
|
echo "Don't know how to manage packages on: $os" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$type" in
|
||||||
|
yum)
|
||||||
|
echo "yum --assumeyes update"
|
||||||
|
echo "yum clean all"
|
||||||
|
;;
|
||||||
|
apt)
|
||||||
|
echo "apt-get --yes dist-upgrade"
|
||||||
|
echo "apt-get autoclean"
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
echo "pacman --noconfirm --sync --sysupgrade"
|
||||||
|
echo "pacman --noconfirm --sync --clean"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Don't know how to manage packages on: $os" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
52
cdist/conf/type/__package_upgrade_all/man.text
Normal file
52
cdist/conf/type/__package_upgrade_all/man.text
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
cdist-type__package_upgrade_all(7)
|
||||||
|
==================================
|
||||||
|
Ricardo Catalinas Jiménez <jimenezrick--@--gmail.com>
|
||||||
|
|
||||||
|
|
||||||
|
NAME
|
||||||
|
----
|
||||||
|
cdist-type__package_upgrade_all - Upgrade all the installed packages
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
This cdist type allows you to upgrade all the installed packages on the
|
||||||
|
target. It will automatically use the appropriate package manager.
|
||||||
|
|
||||||
|
|
||||||
|
REQUIRED PARAMETERS
|
||||||
|
-------------------
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
OPTIONAL PARAMETERS
|
||||||
|
-------------------
|
||||||
|
type::
|
||||||
|
The package manager to use. Default is determined based on the $os
|
||||||
|
explorer variable.
|
||||||
|
e.g. apt for Debian
|
||||||
|
yum for Red Hat
|
||||||
|
pacman for Arch Linux
|
||||||
|
|
||||||
|
|
||||||
|
EXAMPLES
|
||||||
|
--------
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
# Upgrade all the installed packages on the target
|
||||||
|
__package_upgrade_all
|
||||||
|
|
||||||
|
# Force use of a specific package manager
|
||||||
|
__package_upgrade_all --type apt
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
- cdist-type(7)
|
||||||
|
|
||||||
|
|
||||||
|
COPYING
|
||||||
|
-------
|
||||||
|
Copyright \(C) 2014 Ricardo Catalinas Jiménez. Free use of this software is
|
||||||
|
granted under the terms of the GNU General Public License version 3 (GPLv3).
|
1
cdist/conf/type/__package_upgrade_all/parameter/optional
Normal file
1
cdist/conf/type/__package_upgrade_all/parameter/optional
Normal file
|
@ -0,0 +1 @@
|
||||||
|
type
|
0
cdist/conf/type/__package_upgrade_all/singleton
Normal file
0
cdist/conf/type/__package_upgrade_all/singleton
Normal file
|
@ -110,6 +110,7 @@ setup the variable "require" to contain the requirements. Multiple
|
||||||
requirements can be added white space separated.
|
requirements can be added white space separated.
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
1 # No dependency
|
1 # No dependency
|
||||||
2 __file /etc/cdist-configured
|
2 __file /etc/cdist-configured
|
||||||
3
|
3
|
||||||
|
@ -121,21 +122,43 @@ requirements can be added white space separated.
|
||||||
9 require="__file/etc/cdist-configured __link/tmp/cdist-testfile" \
|
9 require="__file/etc/cdist-configured __link/tmp/cdist-testfile" \
|
||||||
10 __file /tmp/cdist-another-testfile
|
10 __file /tmp/cdist-another-testfile
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
Above the "require" variable is only set for the command that is
|
Above the "require" variable is only set for the command that is
|
||||||
immediately following it. Dependencies should allways be declared that way.
|
immediately following it. Dependencies should always be declared that way.
|
||||||
|
|
||||||
On line 4 you can see that the instantion of a type "__link" object needs
|
On line 4 you can see that the instantion of a type "\__link" object needs
|
||||||
the object "__file/etc/cdist-configured" to be present, before it can proceed.
|
the object "__file/etc/cdist-configured" to be present, before it can proceed.
|
||||||
|
|
||||||
This also means that the "__link" command must make sure, that either
|
This also means that the "\__link" command must make sure, that either
|
||||||
"__file/etc/cdist-configured" allready is present, or, if it's not, it needs
|
"\__file/etc/cdist-configured" allready is present, or, if it's not, it needs
|
||||||
to be created. The task of cdist is to make sure, that the dependency will be
|
to be created. The task of cdist is to make sure, that the dependency will be
|
||||||
resolved appropriately and thus "__file/etc/cdist-configured" be created
|
resolved appropriately and thus "\__file/etc/cdist-configured" be created
|
||||||
if necessary before "__link" proceeds (or to abort execution with an error).
|
if necessary before "__link" proceeds (or to abort execution with an error).
|
||||||
|
|
||||||
|
If you really need to make all types depend on a common dependency, you can
|
||||||
|
export the "require" variable as well. But then, if you need to add extra
|
||||||
|
dependencies to a specific type, you have to make sure that you append these
|
||||||
|
to the globally already defined one.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# First of all, update the package index
|
||||||
|
__package_update_index
|
||||||
|
# Upgrade all the installed packages afterwards
|
||||||
|
require="__package_update_index" __package_upgrade_all
|
||||||
|
# Create a common dependency for all the next types so that they get to
|
||||||
|
# be executed only after the package upgrade has finished
|
||||||
|
export require="__package_upgrade_all"
|
||||||
|
|
||||||
|
# Ensure that lighttpd is installed after we have upgraded all the packages
|
||||||
|
__package lighttpd --state present
|
||||||
|
# Ensure that munin is installed after lighttpd is present and after all
|
||||||
|
# the packages are upgraded
|
||||||
|
require="$require __package/lighttpd" __package munin --state present
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
All objects that are created in a type manifest are automatically required
|
All objects that are created in a type manifest are automatically required
|
||||||
from the type that is calling them. This is called "autorequirement" in
|
from the type that is calling them. This is called "autorequirement" in
|
||||||
cdist jargon.
|
cdist jargon.
|
||||||
|
|
|
@ -100,7 +100,7 @@ echo use_ssl >> cdist/conf/type/__nginx_vhost/parameter/boolean
|
||||||
USING PARAMETERS
|
USING PARAMETERS
|
||||||
----------------
|
----------------
|
||||||
The parameters given to a type can be accessed and used in all type scripts
|
The parameters given to a type can be accessed and used in all type scripts
|
||||||
(e.g manifest, gencode-*, explorer/*). Note that boolean parameters are
|
(e.g manifest, gencode, explorer). Note that boolean parameters are
|
||||||
represented by file existence. File exists -> True,
|
represented by file existence. File exists -> True,
|
||||||
file does not exist -> False
|
file does not exist -> False
|
||||||
|
|
||||||
|
@ -281,7 +281,7 @@ on the target, there must be another type that provides this tool and the first
|
||||||
type should create an object of the specific type.
|
type should create an object of the specific type.
|
||||||
|
|
||||||
If your type wants to save temporary data, that may be used by other types
|
If your type wants to save temporary data, that may be used by other types
|
||||||
later on (for instance __file), you can save them in the subdirectory
|
later on (for instance \__file), you can save them in the subdirectory
|
||||||
"files" below $__object (but you must create it yourself).
|
"files" below $__object (but you must create it yourself).
|
||||||
cdist will not touch this directory.
|
cdist will not touch this directory.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue