Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Testinfra を使ってみた

2 511 vues

Publié le

Testinfra を使ってみた@Shizuoka.py #5 2016-07-09

Publié dans : Technologie
  • Soyez le premier à commenter

Testinfra を使ってみた

  1. 1. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 Testinfra を使っ てみた Shizuoka.py #5 2016-07-09 となか(@ftnk)
  2. 2. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 自己紹介 名前: となか (@ftnk)✓ インフラエンジニア Solaris✓ ✓ write: Shell Script/Ruby✓ read: Shell Script/Ruby/Perl/ Python/PHP/C ✓
  3. 3. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 Testinfra を使ってみた Testinfra とは✓ Testinfra を使ってみる✓ カスタマイズ✓
  4. 4. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 Testinfra とは Testinfra Philippe Pepiot さん作 たぶん BSD 好き✓ ✓ http://testinfra.readthedocs.io/en/latest/✓ https://github.com/philpep/testinfra✓ https://philpep.org/blog/infrastructure- testing-with-testinfra 2015-08-18 付け✓ ✓ ✓
  5. 5. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 Testinfra とは Testinfra aims to be a Serverspec equivalent in python http://serverspec.org/✓ ✓ Pytest の Plugin として書か れている ✓
  6. 6. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 Testinfra の特徴 Puppet/Ansible/salt の機能を 使ったテストが可能 ✓ 対応 OS Linux (RHEL/Fedora/Debian/Ubuntu)✓ BSD (FreeBSD/OpenBSD/NetBSD)✓ ✓ Linux 対応が雑✓
  7. 7. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 Testinfra を使ってみ る
  8. 8. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 インストール $ pip install testinfra
  9. 9. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 テスト を書く
  10. 10. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 Package def test_httpd_is_installed(Package): httpd = Package("httpd") assert httpd.is_installed assert httpd.version.startswith("2.2")
  11. 11. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 Service def test_httpd_running_and_enabled(Service): httpd = Service("httpd") assert httpd.is_running assert httpd.is_enabled
  12. 12. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 File def test_passwd_file(File): passwd = File("/etc/passwd") assert passwd.contains("root") assert passwd.user == "root" assert passwd.group == "root" assert passwd.mode == 0o644
  13. 13. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 Puppet で情報を取得 def test_puppet_resource(PuppetResource): pr = PuppetResource('user', 'root') assert pr['root']['gid'] == '0'
  14. 14. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 facter で情報を取得 def test_facter(Facter): facter = Facter('kernel', 'architecture') assert facter['kernel'] == 'Linux' assert facter['architecture'] == 'x86_64'
  15. 15. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 Ansible で情報を取得 def test_ansible(Ansible): ansible = Ansible('file', '/etc/passwd') assert ansble['mode'] == '0644' Ansible が使えるのは backend として Ansible を指定した時の み。
  16. 16. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 その他 http:// testinfra.readthedocs.io/en/ latest/modules.html
  17. 17. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 テスト の実行
  18. 18. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 local に対して実行 $ testinfra -v
  19. 19. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 SSH で remote host に 対して実行 $ testinfra -v --hosts=host1,host2:10022 default では paramiko が使われ る。
  20. 20. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 ~/.ssh/config を喰わせる $ testinfra -v --ssh-config=${HOME}/.ssh/config --hosts=host1,host2
  21. 21. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 並列実行 並列実行には pytest-xdist を使う $ pip install pytest-xdist '-n' で並列数を指定して実行 $ testinfra -n 2 -v --hosts=localhost
  22. 22. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 接続方法を変える デフォルトの接続は local✓ リモート接続のデフォルトは paramiko paramiko/ssh/salt/ansible を選択可能✓ ✓ Docker にも接続できる docker exec✓ ✓ '--connection=' で指定✓
  23. 23. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 Nagios 監視 $ testinfra -qq --nagios
  24. 24. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 カスタ マイズ
  25. 25. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 Solaris で Package のテ ストを利用できるようにする OS の判別✓ class SolarisPackage の実装✓
  26. 26. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 OS の判別 testinfra/modules/package.py の get_module_class に以下を追 加(手抜き) elif Command.run_test("which pkg").rc == 0: return SolarisPackage
  27. 27. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 SolarisPackage の実装 testinfra/modules/package.py に以下を追加 class SolarisPackage(Package): @property def is_installed(self): return self.run_test("pkg list %s", self.name).rc == 0 @property def version(self): out = self.check_output("pkg list -H %s | awk '{print $2}'", self.name) return out
  28. 28. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 Solaris 用テスト def test_httpd_is_installed_on_solaris(Package): httpd = Package("apache-24") assert httpd.is_installed assert httpd.version.startswith("2.4")
  29. 29. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 自作モジュール 自作モジュールは Testinfra の pluign にするものらしい https://github.com/philpep/ testinfra-echo ✓ ✓
  30. 30. Testinfra を使ってみた - Shizuoka.py #52016-07-09 Powered by Rabbit 2.1.9 まとめ Testinfra は Pytest のプラグ インとしてインフラのテストを 書く方法を提供 ✓ Ansible/salt/Puppet/facter など使えるものは使って情報を 取得 ✓ OS/distribution によるテスト 方法の分岐が微妙 ✓

×