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
|
||||
----
|
||||
cdist-type__apt_update_index - update apt's package index
|
||||
cdist-type__apt_update_index - Update apt's package index
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#
|
||||
#
|
||||
# __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.
|
||||
#
|
||||
|
||||
|
|
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.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
1 # No dependency
|
||||
2 __file /etc/cdist-configured
|
||||
3
|
||||
|
@ -121,21 +122,43 @@ requirements can be added white space separated.
|
|||
9 require="__file/etc/cdist-configured __link/tmp/cdist-testfile" \
|
||||
10 __file /tmp/cdist-another-testfile
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
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
|
||||
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 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
|
||||
from the type that is calling them. This is called "autorequirement" in
|
||||
cdist jargon.
|
||||
|
|
|
@ -100,7 +100,7 @@ echo use_ssl >> cdist/conf/type/__nginx_vhost/parameter/boolean
|
|||
USING PARAMETERS
|
||||
----------------
|
||||
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,
|
||||
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.
|
||||
|
||||
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).
|
||||
cdist will not touch this directory.
|
||||
|
||||
|
|
Loading…
Reference in a new issue