Hier ist der Abschnitt meines Textbuch für das Herunterladen und Gebäude Rubin von der Quelle:ansible: definieren, wenn ein Befehl nicht ausgeführt hat (Gebäude Rubin von der Quelle)
vars:
ruby_version: '2.0.0-p247'
ruby_url: 'ftp://ftp.ruby-lang.org//pub/ruby/2.0/ruby-{{ ruby_version }}.tar.gz'
tasks:
- name: Ensure ruby dependencies are installed
apt: pkg=$item state=installed update-cache=yes
sudo: yes
with_items:
- build-essential
- git-core
- libreadline6-dev
- libyaml-dev
- libsqlite3-dev
- sqlite3
- libgdbm-dev
- libncurses5-dev
- libtool
- bison
- libffi-dev
- libdigest-hmac-perl
- unzip
- zlib1g
- zlib1g-dev
- name: Ensure the ruby source is downloaded
get_url: url=$ruby_url dest=/home/vagrant/ruby-{{ ruby_version }}.tar
- name: Ensure the ruby source is extracted
command: tar -zxf /home/vagrant/ruby-$ruby_version.tar creates=/home/vagrant/ruby-{{ ruby_version }}
- name: Ensure ruby is installed
command: $item chdir=/home/vagrant/ruby-$ruby_version
with_items:
- ./configure
- make
- sudo make install
Die letzte Aufgabe (konfigurieren make und make install) wird bei jedem Provisioning ausgeführt.
Ich kann überprüfen, ob Ruby bereits mit der richtigen Version mit ruby -v
installiert ist. Wie kann ich in meinem Playbook definieren, dass dies eine Bedingung ist, um diesen Schritt auszuführen?
Gibt es auch eine Möglichkeit, dies zu einer Bedingung für die gesamte Aufgabenliste zu machen, und nicht nur die letzte?
Und Was, wenn Rubin überhaupt nicht installiert ist? – kovpack