Ansible(3)システム管理

command

コマンドの実行を行う。コマンド内にアスタリスク(*)が含まれるコマンドに関しては、shellモジュールを使用する。

- name: "configure the fping programs"
  command: chdir=/usr/local/src/fping-{{ fping.version }} ./configure

chdir=を指定するとディレクトリに遷移してから任意のコマンドを実行する。commandモジュールの実行は冪等性を保てない場合があるため、Ansibleの他のモジュールで代替可能である場合は、そちらを使うことが望ましい。

make

makeを実行する

パラメータ 必須 デフォルト 内容
chdir yes makeを実行する前に遷移するディレクトリ
target no ターゲット (install)
- name: "make the Apache programs"
  make: chdir=/usr/local/src/httpd-{{ httpd.version }}

- name: "install the Apache programs"
  make: chdir=/usr/local/src/httpd-{{ httpd.version }} target=install

user

ユーザアカウントの管理を行う

パラメータ 必須 デフォルト 内容
name yes ユーザ名
password no パスワード
home no ホームディレクトリ
shell no 使用するシェル
- name: "add the user 'hacluster'"
  user: name=hacluster password={{ pacemaker.hacluster_password | password_hash('sha512') }}

cron

crontabの編集を行う

パラメータ 必須 デフォルト 内容
name no ディスクリプション
month no ジョブが実行される月
day no ジョブが実行される日
hour no ジョブが実行される時
minute no ジョブが実行される分
job no 実行されるジョブ
- name: "add crontab to execute {{ centos_repo.sync_sh }}"
  cron: name="syncrepo" minute="0" job="{{ centos_repo.sync_sh }}"

selinux

SELinuxの状態とポリシーを変更する

パラメータ 必須 デフォルト 内容
state no 状態 (enforcing, permissive, disabled
- name: "disable SELinux"
  selinux: state=disabled
  when: selinux_conf.stat.exists

timezone

タイムゾーンを指定する

パラメータ 必須 デフォルト 内容
name no タイムゾーン
- name: "set timezone to Asia/Tokyo"
  timezone: name=Asia/Tokyo

sysctl

sysctl.confの編集を行う

パラメータ 必須 デフォルト 内容
name yes 項目名
value yes (インストール) present, installed, latest (削除) absent, removed
state yes present 状態 (present, absent)
reload no yes sysctlを再起動
# 監視可能なファイル数の上限を設定
- name: "set fs.inotify.max_user_watches to {{ lsyncd.inotify_max_user }} in /etc/sysctl.conf"
  sysctl: name=fs.inotify.max_user_watches value={{ lsyncd.inotify_max_user }}

yum

yumパッケージの管理を行う

パラメータ 必須 デフォルト 内容
name yes パッケージ名
state no present (インストール) present, installed, latest (削除) absent, removed
enablerepo no 有効化するリポジトリID
disable_gpg_check no GPG Keyチェックを無効化
- name: "install the latest version of curl, policycoreutils, openssh-server, openssh-clients"
  yum: name={{ item }} state=latest
  with_items:
    - curl
    - policycoreutils
    - openssh-server
    - openssh-clients
- name: "upgrade all packages"
  yum: name=* state=latest
# @Development toolsはstate=presentを指定
- name: "install the latest version of @Development tools"
  yum: name="@Development tools" state=present

yum_repository

yumリポジトリの追加と削除を行う

パラメータ 必須 デフォルト 内容
name yes リポジトリID
description no ディスクリプション
baseurl no リポジトリURL
gpgcheck no no GPGチェックの有無
enabled no yes 有効化
- name: "add epel repository"
  yum_repository: name=epel description=epel baseurl="{{ epel_repo }}" enabled=no

rpm_key

yumリポジトリのGPG Keyの追加や削除を行う

パラメータ 必須 デフォルト 内容
key yes GPG key (URL, パス)
state no present 状態(present, ansent)
- name: "import a rpm key from a url"
  rpm_key: state=present key="{{  jenkins.repokey  }}"

pear

pear/peclパッケージの管理を行う

パラメータ 必須 デフォルト 内容
name yes パッケージ名
state no present (インストール) present, latest (削除) absent
- name: "install MongoDB pecl package"
  pear: name=pecl/mongodb state=present

pip

Pythonライブラリの管理を行う

パラメータ 必須 デフォルト 内容
name yes ライブラリ名
state no present (インストール) present, latest, forcereinstall (削除) absent
- name: "install pip package"
  pip: name=pip state=forcereinstall

- name: "install awscli package"
  pip: name=awscli

service

サービスの管理を行う

パラメータ 必須 デフォルト 内容
name yes パッケージ名
state no 状態 (started, stopped, restarted, reloaded)
enabled no ブート時起動 (yes, no)
- name: "start service sshd, if not running"
  service: name=sshd state=started enabled=yes

systemd

サービスの管理を行う

パラメータ 必須 デフォルト 内容
daemon-reload no デーモンの再読み込み
- name: reload systemd daemon
  systemd: daemon-reload=yes

alternatives

代替可能なプログラムの管理を行う

パラメータ 必須 デフォルト 内容
name yes リンク名
path yes リンク先
# メールサービスにpostfixを選択
- name: "set postfix for mta"
  alternatives: name=mta path=/usr/sbin/sendmail.postfix