ansible_os_family/ansible_pkg_mgr

Ansibleにおいて表題の件について。

■ 環境

  • Ansible 2.3.1.0

■ ansible -m setup

$ ansible [対象] -m setup

このコマンドで”gather_facts“で収集している情報がどういうものか取得できる。

自信が”task“の中でよく使用する表題の項目についても下記のように取得できている。

CentOSの場合

$ ansible host1 -m setup
  :
        "ansible_lsb": {
            "codename": "Final",
            "description": "CentOS release 6.9 (Final)",
            "id": "CentOS",
            "major_release": "6",
            "release": "6.9"
        },
  :
        "ansible_os_family": "RedHat",
        "ansible_pkg_mgr": "yum",
  :
$

Ubuntuの場合

$ ansible host2 -m setup
  :
        "ansible_lsb": {
            "codename": "xenial",
            "description": "Ubuntu 16.04.2 LTS",
            "id": "Ubuntu",
            "major_release": "16",
            "release": "16.04"
        },
  :
        "ansible_os_family": "Debian",
        "ansible_pkg_mgr": "apt",
  :
$

以上。

SSHユーザを指定

Ansibleにおいて表題の通り。

■ 環境

  • Ansible 2.3.1.0
  • Mac OSX El Capitan

■ ansible.cfg

開発環境で主に使うので、”ansible.cfg“には下記を書いている。

$ cat ansible.cfg
[defaults]
inventory = hosts
remote_user = vagrant
private_key_file = ~/.vagrant.d/insecure_private_key
host_key_checking = False
retry_files_enabled = False
$

いざ開発したものを試しに別環境にやってみようかと思うと、”ansible.cfg“の設定が優先されてしまうのでたまに困ることがある。

よって”hosts“に下記のように”variable“として書くことにしている。

$ cat hosts
  :
[group1]
host001
host002

[group1:vars]
ansible_ssh_private_key_file=~/.ssh/id_rsa
ansible_ssh_user=root
$

host001“等は”~/.ssh/config“の方に書いている。

もうちょっとうまい方法はないのであろうか。

以上。

■ 関連

ansible_ssh_private_key_file

InventoryFileでグループ変数

logrotate.confのテスト

表題の通り。たまに書き加えたりした時に、間違えていて実行されないことがあるので確認する手段。

■ 環境

  • Linux

■ logrotate

下記のようなファイルで設定するとする。

$ cat /etc/logrotate.d/nginx
/var/log/nginx/*.log {
        daily
        dateext
        missingok
        rotate 7
        compress
        sharedscripts
        postrotate
                /sbin/service nginx reload > /dev/null 2>/dev/null || true
        endscript
}
$

これが正しく書かれているのか?を確認する。

$ logrotate -d /etc/logrotate.d/nginx
reading config file /etc/logrotate.d/nginx
reading config info for /var/log/nginx/*.log

Handling 1 logs

rotating pattern: /var/log/nginx/*.log  after 1 days (7 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/nginx/access.log
  log does not need rotating
considering log /var/log/nginx/error.log
  log does not need rotating
considering log /var/log/nginx/example.jp_access_443.log
  log does not need rotating
considering log /var/log/nginx/example.jp_access_80.log
  log does not need rotating
considering log /var/log/nginx/example.jp_error_443.log
  log does not need rotating
considering log /var/log/nginx/example.jp_error_80.log
  log does not need rotating
not running postrotate script, since no logs were rotated
$

試しにエラーを入れて実行してみる。

$ logrotate -d /etc/logrotate.d/nginx
reading config file /etc/logrotate.d/nginx
reading config info for /var/log/nginx/*.log
error: /etc/logrotate.d/nginx:5 unknown option 'rotata' -- ignoring line
error: /etc/logrotate.d/nginx:5 unexpected text

Handling 1 logs

rotating pattern: /var/log/nginx/*.log  after 1 days (no old logs will be kept)
empty log files are rotated, old logs are removed
  :
$

error“があることがわかる。また内容もわかる。

以上。

iptablesで特定のルール削除

表題の件について。

■ 環境

  • Linux

■ iptables

まずは既存のチェインと番号を確認する。

$ iptables -nL --line-numbers

この”–line-numbers“というオプションを知らなかった。

あとは番号を指定して削除するだけである。

$ iptabls -D [chain] [number]

以上。

■ 関連

iptablesのDROPとREJECT

複数のホストグループを指定

Ansibleにおいて表題の通り。先日のエントリでは1ホストグループに対して実行していたのだが、複数のグループの時にはどうしたら良いのか、というのを試したメモ。

■ 環境

  • Ansible 2.3.1.0

■ ansible-playbook

親子関係のグループで子のグループにのみ実行したいのだが、その子グループが複数ある。複数の子グループを同時に実行したい。

$ ansible-playbook -l group1 example.yml

上記でホストグループを指定することが可能なので、複数やるには?とマニュアルも読まずに実行してみた。

$ ansible-playbook -l group1 -l group2 example.yml

上記では”group2“でのみ実行された。最後に指定したものが優先されてしまうようである。

$ ansible-playbook -l group1,group2 example.yml

上記のようにリスト形式で指定すると、思い通りの結果が得られた。

以上。

■ 関連

playbook実行時にホストグループを指定

グループの親子関係