Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ansible入門

airhand
February 27, 2018

 ansible入門

ansibleの概要説明とサンプルリポジトリのリンク

airhand

February 27, 2018
Tweet

More Decks by airhand

Other Decks in Technology

Transcript

  1. 今までは... Load Balancer Web Server DB Server haproxy nginx httpd

    MariaDB PostgreSQL 構成管理者 毎回手作業 手順が増えるたびにメモ ノードが増えると地獄 簡単なものはスクリプトにできるが、要求が増えるとメンテが大変
  2. ansibleを導入すると... ansible Load Balancer Web Server DB Server Playbooks (YAML)

    haproxy nginx httpd MariaDB PostgreSQL 構成管理者 playbookをバージョン管理 各ノードにsshでつなげるようにしておく 環境構築はコマンドを打つだけ ssh ssh ssh
  3. nginx インストール & サービス開始 --- - hosts: web-servers tasks: -

    name: install nginx yum: name: nginx state: installed - name: start nginx.service systemd: name: nginx state: started enabled: yes
  4. 設定ファイルをテンプレートから生成 --- - hosts: web-servers tasks: - name: setup nginx

    xxx.conf template: src: xxx.conf.j2 dest: /etc/nginx/conf.d/xxx.conf notify: restart nginx # 変更があれば再起動 - meta: flush_handlers handlers: - name: restart nginx systemd: name: nginix state: restarted
  5. テンプレートの中身 jinja2 というテンプレートライブラリを利用 $ cat xxx.conf.j2 server { {# IPアドレス等をハードコードせずに変数で設定できる

    #} server_name {{ hostvars[inventory_hostname]['ansible_eth ↓↓↓ $ cat /etc/nginx/conf.d/xxx.conf server { server_name 192.168.33.30;
  6. 実際は以下のような構成で運用 ├── ansible.cfg ├── inventories │ └── sample │ └──

    hosts ├── playbooks │ ├── common.yml │ ├── db-servers.yml │ ├── roles │ │ ├── common │ │ ├── mariadb │ │ ├── nginx # roleそれぞれでtasks、handlersを管理 │ │ │ ├── handlers │ │ │ ├── tasks │ │ │ └── templates │ │ └── php │ └── web-servers.yml # web-server向けのroleをインポート ├── site.yml # roleをまとめたymlをさらにまとめる └── ssh_config