user icon

Vagrant+AnsibleでCentOS7のセキュリティアップデートまで

muraveです。ここ最近の記事、

についてスクリプト化してGitHubで公開しました

jmurabe/scaleway-centos7base

クラウド(Scaleway)上で動かすのでセキュリティ確保のために yum update するべき。しかし全部アップデートすると時間がかかりすぎる。そこでセキュリティアップデート出来るようにセットアップして実行するところまで自動で、という内容です。

冪等性が確保できているとは言い難い所はありますが(/securityが存在するか?だけでsecurityリポジトリが作成されているか判断している等)、ベースとしては使えるとおもいます。


実行するとこんな感じ(一部伏せてます)。

$ git clone git@github.com:jmurabe/scaleway-centos7base.git
Cloning into 'scaleway-centos7base'...
remote: Counting objects: 15, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 15 (delta 0), reused 15 (delta 0), pack-reused 0
Receiving objects: 100% (15/15), done.

$ cd scaleway-centos7base 

$ cp .env.example .env

.env の内容を修正してください。

$ vagrant up
Bringing machine 'default' up with 'scaleway' provider...
==> default: Creating a server with the following settings...
==> default:  -- Commercial Type: VC1S
==> default:  -- Image: 9103368e-4fab-4243-aa8d-18121796c086
==> default:  -- Name: scw-******
==> default: Starting the server...
==> default: Waiting for server to become "ready"...
==> default: Waiting for SSH to become available...
==> default: Machine is booted and ready for use!
==> default: [vagrant-hostsupdater] Checking for host entries
==> default: Rsyncing folder: /Users/murave/scaleway/centos7base/ => /vagrant
==> default: Running provisioner: ansible...
    default: Running ansible-playbook...

PLAY [all] *********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [default]

TASK [centos7common : installs] ************************************************
changed: [default] => (item=[u'yum-utils', u'git', u'unzip', u'libselinux-python', u'libsemanage-python', u'policycoreutils-python'])

TASK [centos7secup : install on yum security update] ***************************
changed: [default] => (item=[u'yum-plugin-security', u'createrepo', u'bzip2'])

TASK [centos7secup : check /security exists] ***********************************
ok: [default]

TASK [centos7secup : make /security] *******************************************
changed: [default]

TASK [centos7secup : create repo for CEFS project] *****************************
changed: [default]

TASK [centos7secup : download vmfarms/generate_updateinfo] *********************
changed: [default]

TASK [centos7secup : download CEFS errata.latest.xml.bz2] **********************
changed: [default]

TASK [centos7secup : update CEFS project repo and yum security update] *********
changed: [default]

PLAY RECAP *********************************************************************
default                    : ok=9    changed=7    unreachable=0    failed=0   

HostName(IP)はssh-configで確認するのが便利かと思います。

$ vagrant ssh-config
Host default
  HostName ***.***.***.***
  User root
  Port 22
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/murave/.ssh/id_rsa
  IdentitiesOnly yes
  LogLevel FATAL

余談

centos7commonとSELinuxについて

centos7commonでSELinux制御絡みのパッケージ等を入れてるのは環境構築時に必要になるだろうという理由でなんですが、実は指定しているScalewayのイメージから起動するインスタンスではSELinuxは無効となっていたりします。

$ vagrant ssh
Last login: Tue Sep 19 08:41:21 2017 from 114.160.75.94
[root@scw-****** ~]# getenforce
Disabled

SELinux関係はVirtualBoxで試していて追加したのですが、そもそもcentos7common自体の内容が薄いのでこれをなくして、パッケージが必要なRoleすべてにinstallを書いたほうがRoleの再利用性が高まる気もしています。でも、Roleの依存性を全てなくそうとするのは逆効果ですしねぇ。

ScalewayのSecurity groupについて

このスクリプトで起動したScalewayのインスタンスでは、Default security group が設定されるかとおもいますので(ORGANIZATION DEFAULTを変更していなければ)、このフィルターを事前に調整しておくと良いかと思います。

ScalewayのSecurity groupの変更はインスタンス起動時しか反映されないようなので注意してください(稼働中インスタンスに適用するにはコントロールパネルからインスタンスを起動しなおさないとダメっぽい)

動作の詳細を確認したい時

Vagrantfileの

  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "provisioning/playbook.yml"
    #ansible.verbose = "extra"
    ansible.limit = 'all'
  end

でコメントアウトしている ansible.verbose = “extra” を生かして下さい。

Facebooktwittergoogle_pluslinkedintumblrmail

タグ: , , , ,

名前
E-mail
URL
コメント