centos:ansible:basics

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
centos:ansible:basics [21.06.2020 16:18. ] – [Gourav Shah - Ansible Playbook Essentials] Abschnitt ergänzt djangocentos:ansible:basics [28.06.2020 13:53. ] – [adhoc - Befehle] django
Zeile 340: Zeile 340:
  
 ==== Variablen ==== ==== Variablen ====
-Variablen in Playbooks sind der Verwendung von Variablen in jeder anderen Programmiersprache sehr ähnlich. Mit Hilfe von Variablen können wir einfach wiederkehrende Werteangaben einmal definieren und später reicht es dann jeweils auf diese Definition zu referenzieren. Ferner ist es auch möglich Variablen auf Grund einer Bedingung zu setzen.+Variablen in Playbooks sind der Verwendung von Variablen in jeder anderen Programmiersprache sehr ähnlich. Mit Hilfe von Variablen können wir einfach wiederkehrende Werteangaben einmal definieren und später reicht es dann jeweils auf diese Definition zu referenzieren.  
 + 
 +Bei der Definition bzw.genauer gesagt bei der Wertezuweisung zu Variablen, stehen uns altbekannte Möglichkeiten aus diversen Programmiersprachen zur Verfügung. so können wir z.B. bei der Definition der Nodes **''hosts:''** folgende Wertedefinitionen verwenden: 
 +  * **catch all** : Auswahl aller Hosts durch **''- hosts: all''** bzw. auch **''- hosts: *''** 
 +  * **Hostgruppe** : Wählt die im **inventory** definierte Hostgruppe: **''- hosts: CentOS8''**   
 +  * **Teilmenge einer Hostgruppe**: Wollen wir die Webserver 1 - 10 ansprechen, wäre entsprechen z.B. das hier die zugehörige Definition: **''- hosts: www[1:10]''** 
 +  * **Ausschlussverfahren** : Einzelne Hosts aus einer Gruppe auszunehmen (exclude) ist natürlich auch einfach machbar. **''- hosts: CentOS8:!ansible''** exkludiert den Host **ansible** aus der Hostgruppe **CentOS8** 
 +  * **kombinierte Bereiche** : Natürlich ist es auch möglich, Kombinationen der obigen Definitionen anzuwenden, wie z.B.:  **''- hosts: www[1:9]:!www6,lbha[1:2]''**, also www1 - www9, aber ohne www6 sowie die beiden Loadbalancer lbha1 und lbha2. 
 + 
 +Neben der Variablenzuweiseung ist es auch ferner möglich Variablen auf Grund einer Bedingung zu setzen.
  
 So können wir zum Beispiel die Variable **''DNS_port''** definieren und dieser dem Wert **53** zuweisen. Diese Variable und natürlich auch den zugehörigen Wert können wir dann in unserem Playbook überall dort Verwenden, wo wir später die Variable **''{{dns_port}}''** verwenden.   So können wir zum Beispiel die Variable **''DNS_port''** definieren und dieser dem Wert **53** zuweisen. Diese Variable und natürlich auch den zugehörigen Wert können wir dann in unserem Playbook überall dort Verwenden, wo wir später die Variable **''{{dns_port}}''** verwenden.  
Zeile 781: Zeile 790:
    $ ansible intranet -m yum -a "name = chrony state = latest"     $ ansible intranet -m yum -a "name = chrony state = latest" 
  
 +==== Module - Dokumentation ====
 +Ansible bringt bei der Installation eine Vielzahl von Modulen, die sich im Verzeichnis **''../ansible/modules/''** befinden, mit, mit deren Hilfe wir uns die Abrit mit unseren Playbooks wesentlich vereinfachen können. 
 +
 +Wie diese **[[https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html|Module]]** zu verwenden sind, kann man entweder über die Ansible-Dokuseite im **[[https://docs.ansible.com/ansible/latest/modules/modules_by_category.html|WEB]]** erkunden oder auch mit Hilfe des Befehls **''ansible#doc''** erfragen.
 +
 +Also entweder im Falle des Modules**dnf** die Webseite https://docs.ansible.com/ansible/latest/modules/dnf_module.html besuchen oder auf der Konsole den Befehl **''ansible-doc dnf''** bemühen.
 +   $ ansible-doc dnf
 +<code>> DNF    (/usr/lib/python3.6/site-packages/ansible/modules/packaging/os/dnf.py)
 +
 +        Installs, upgrade, removes, and lists packages and groups with the `dnf' package
 +        manager.
 +
 +  * This module is maintained by The Ansible Core Team
 +OPTIONS (= is mandatory):
 +
 +- allow_downgrade
 +        Specify if the named package and version is allowed to downgrade a maybe already
 +        installed higher version of that package. Note that setting allow_downgrade=True can
 +        make this module behave in a non-idempotent way. The task could end up with a set of
 +        packages that does not match the complete list of specified packages to install
 +        (because dependencies between the downgraded package and others can cause changes to
 +        the packages which were in the earlier transaction).
 +        [Default: no]
 +        type: bool
 +        version_added: 2.7
 +
 +- autoremove
 +        If `yes', removes all "leaf" packages from the system that were originally installed as
 +        dependencies of user-installed packages but which are no longer required by any such
 +        package. Should be used alone or when state is `absent'
 +        [Default: no]
 +        type: bool
 +        version_added: 2.4
 +
 +- bugfix
 +        If set to `yes', and `state=latest' then only installs updates that have been marked
 +        bugfix related.
 +        [Default: no]
 +        type: bool
 +        version_added: 2.7
 +
 +- conf_file
 +        The remote dnf configuration file to use for the transaction.
 +        [Default: (null)]
 +
 +- disable_excludes
 +        Disable the excludes defined in DNF config files.
 +        If set to `all', disables all excludes.
 +        If set to `main', disable excludes defined in [main] in dnf.conf.
 +        If set to `repoid', disable excludes defined for given repo id.
 +        [Default: (null)]
 +        version_added: 2.7
 +
 +- disable_gpg_check
 +        Whether to disable the GPG checking of signatures of packages being installed. Has an
 +        effect only if state is `present' or `latest'.
 +        [Default: no]
 +        type: bool
 +
 +- disable_plugin
 +        `Plugin' name to disable for the install/update operation. The disabled plugins will
 +        not persist beyond the transaction.
 +        [Default: (null)]
 +        version_added: 2.7
 +
 +- disablerepo
 +        `Repoid' of repositories to disable for the install/update operation. These repos will
 +        not persist beyond the transaction. When specifying multiple repos, separate them with
 +        a ",".
 +        [Default: (null)]
 +
 +- download_dir
 +        Specifies an alternate directory to store packages.
 +        Has an effect only if `download_only' is specified.
 +        [Default: (null)]
 +        type: str
 +        version_added: 2.8
 +
 +- download_only
 +        Only download the packages, do not install them.
 +        [Default: no]
 +        type: bool
 +        version_added: 2.7
 +
 +- enable_plugin
 +        `Plugin' name to enable for the install/update operation. The enabled plugin will not
 +        persist beyond the transaction.
 +        [Default: (null)]
 +        version_added: 2.7
 +
 +- enablerepo
 +        `Repoid' of repositories to enable for the install/update operation. These repos will
 +        not persist beyond the transaction. When specifying multiple repos, separate them with
 +        a ",".
 +        [Default: (null)]
 +
 +- exclude
 +        Package name(s) to exclude when state=present, or latest. This can be a list or a comma
 +        separated string.
 +        [Default: (null)]
 +        version_added: 2.7
 +
 +- install_repoquery
 +        This is effectively a no-op in DNF as it is not needed with DNF, but is an accepted
 +        parameter for feature parity/compatibility with the `yum' module.
 +        [Default: yes]
 +        type: bool
 +        version_added: 2.7
 +
 +- install_weak_deps
 +        Will also install all packages linked by a weak dependency relation.
 +        [Default: yes]
 +        type: bool
 +        version_added: 2.8
 +
 +- installroot
 +        Specifies an alternative installroot, relative to which all packages will be installed.
 +        [Default: /]
 +        version_added: 2.3
 +
 +- list
 +        Various (non-idempotent) commands for usage with `/usr/bin/ansible' and `not'
 +        playbooks. See examples.
 +        [Default: (null)]
 +
 +- lock_timeout
 +        Amount of time to wait for the dnf lockfile to be freed.
 +        [Default: 30]
 +        type: int
 +        version_added: 2.8
 +
 += name
 +        A package name or package specifier with version, like `name-1.0'. When using
 +        state=latest, this can be '*' which means run: dnf -y update. You can also pass a url
 +        or a local path to a rpm file. To operate on several packages this can accept a comma
 +        separated string of packages or a list of packages.
 +        (Aliases: pkg)
 +        elements: str
 +        type: list
 +
 +- releasever
 +        Specifies an alternative release from which all packages will be installed.
 +        [Default: (null)]
 +        version_added: 2.6
 +
 +- security
 +        If set to `yes', and `state=latest' then only installs updates that have been marked
 +        security related.
 +        [Default: no]
 +        type: bool
 +        version_added: 2.7
 +
 +- skip_broken
 +        Skip packages with broken dependencies(devsolve) and are causing problems.
 +        [Default: no]
 +        type: bool
 +        version_added: 2.7
 +
 +- state
 +        Whether to install (`present', `latest'), or remove (`absent') a package.
 +        Default is `None', however in effect the default action is `present' unless the
 +        `autoremove' option is enabled for this module, then `absent' is inferred.
 +        (Choices: absent, present, installed, removed, latest)[Default: (null)]
 +
 +- update_cache
 +        Force dnf to check if cache is out of date and redownload if needed. Has an effect only
 +        if state is `present' or `latest'.
 +        (Aliases: expire-cache)[Default: no]
 +        type: bool
 +        version_added: 2.7
 +
 +- update_only
 +        When using latest, only update installed packages. Do not install packages.
 +        Has an effect only if state is `latest'
 +        [Default: no]
 +       type: bool
 +        version_added: 2.7
 +
 +- validate_certs
 +        This only applies if using a https url as the source of the rpm. e.g. for localinstall.
 +        If set to `no', the SSL certificates will not be validated.
 +        This should only set to `no' used on personally controlled sites using self-signed
 +        certificates as it avoids verifying the source site.
 +        [Default: yes]
 +        type: bool
 +        version_added: 2.7
 +
 +
 +NOTES:
 +      * When used with a `loop:` each package will be processed individually, it is much
 +        more efficient to pass the list directly to the `name` option.
 +      * Group removal doesn't work if the group was installed with Ansible because
 +        upstream dnf's API doesn't properly mark groups as installed, therefore upon
 +        removal the module is unable to detect that the group is installed
 +        (https://bugzilla.redhat.com/show_bug.cgi?id=1620324)
 +
 +
 +REQUIREMENTS:  python >= 2.6, python-dnf, for the autoremove option you need dnf >= 2.0.1"
 +
 +AUTHOR: Igor Gnatenko (@ignatenkobrain) <i.gnatenko.brain@gmail.com>, Cristian van Ee (@DJMuggs) <cristian at cvee.org>
 +        METADATA:
 +          status:
 +          - stableinterface
 +          supported_by: core
 +        
 +
 +EXAMPLES:
 +
 +- name: install the latest version of Apache
 +  dnf:
 +    name: httpd
 +    state: latest
 +
 +- name: install the latest version of Apache and MariaDB
 +  dnf:
 +    name:
 +      - httpd
 +     - mariadb-server
 +    state: latest
 +
 +- name: remove the Apache package
 +  dnf:
 +    name: httpd
 +    state: absent
 +
 +- name: install the latest version of Apache from the testing repo
 +  dnf:
 +    name: httpd
 +    enablerepo: testing
 +    state: present
 +
 +- name: upgrade all packages
 +  dnf:
 +    name: "*"
 +    state: latest
 +
 +- name: install the nginx rpm from a remote repo
 +  dnf:
 +    name: 'http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm'
 +    state: present
 +
 +- name: install nginx rpm from a local file
 +  dnf:
 +    name: /usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm
 +    state: present
 +
 +- name: install the 'Development tools' package group
 +  dnf:
 +    name: '@Development tools'
 +    state: present
 +
 +- name: Autoremove unneeded packages installed as dependencies
 +  dnf:
 +    autoremove: yes
 +
 +- name: Uninstall httpd but keep its dependencies
 +  dnf:
 +    name: httpd
 +    state: absent
 +    autoremove: no
 +
 +- name: install a modularity appstream with defined stream and profile
 +  dnf:
 +    name: '@postgresql:9.6/client'
 +    state: present
 +
 +- name: install a modularity appstream with defined stream
 +  dnf:
 +    name: '@postgresql:9.6'
 +    state: present
 +
 +- name: install a modularity appstream with defined profile
 +  dnf:
 +    name: '@postgresql/client'
 +    state: present
 +
 +</code>
  
 ===== Installation ===== ===== Installation =====