只是想在Vagrant中尝试一下Ansible,并记录下来

这是什么?

这是用Vagrant来尝试使用Ansible的简短笔记。

尝试

制作的东西

使用vagrant创建服务器并使用ansible-playbook进行web服务器和数据库服务器的初始设置。

    • サーバA:ansibleホスト

 

    • サーバB:web ansible管理対象サーバ

 

    サーバC:DB ansible管理対象サーバ

建立

使用Vagrant启动主机、网页和数据库。

    • vagrant init bento/centos-6.8

vagrantfileを編集

3台上げたいので、↓も部分をIP変えながら3つにコピーする

  config.vm.define "host" do |node|
    node.vm.box = "bento/centos-6.8"
    node.vm.hostname = "host"
    node.vm.network :private_network, ip: "aaa.bbb.ccc.ddd"
  end
    vagrant up

将Ansible引入主机

    • wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

 

    • rpm -Uvh epel-release-6-8.noarch.rpm

 

    yum -y install ansible

Ansible主机-目标服务器的SSH连接设置

    • vagrant ssh host

vi .ssh/config

↓のような感じでweb,dbのIP,hostnameなど設定

Host web
 HostName xxx.xxx.xxx.xxx
Host db
 HostName yyy.yyy.yyy.yyy
    • ssh-keygen -t rsa

 

    • chmod 777 ~/.ssh/config

 

    • ssh-copy-id web

ssh-copy-id db

ホストで秘密鍵・公開鍵を作ってweb、dbに公開鍵を置いているところです
何も考えずに777にしたので意味はありません

创建库存

vi hosts

↓みたいな感じでホストのサーバでhostsファイルを設定

[web]
xxx.xxx.xxx.xxx
[db]
yyy.yyy.yyy.yyy

ansible all -i hosts -m ping

とりあえずansibleコマンドを試す
-i : インベントリファイルの指定

vi ansible.cfg

hostfile = ./hosts

ansible.cfg上でインベントリを指定しておく

ansible all -m ping

インベントリの指定なしでansibleコマンドが実行可能になっている確認

一边调整剧本一边试一试

準備已完成,現在可以從Ansible 主機使用ansible-playbook進行指令操作。

撰写并执行playbook

    ↓みたいな感じでuserをaddするplaybookを書いてみる
---
- hosts: all
  tasks:
    - name: addUser
      user: name=newUser

ansible-playbook playbook.yml

冪等性があるため、「毎回新しいユーザーが増える」わけではない

尝试在网络上安装Apache

ansible-playbook.ymlに追記する

- hosts: web
  tasks:
    - name: installApache
      yum: name=httpd
    - name: startApache
      service: name=httpd

我试着通过Apache来检查文件。

    vi index.html
<html>
ansible test.
</html>
    • 下記のことをansible-playbook.ymlに追記する

所有者をvagrantに変更し、index.htmlをcopyする
libselinuxをインストールさせる

    - name: installLibselinux
      yum: name=libselinux-python
    - name: chown
      file: dest=/var/www/html owner=vagrant recurse=yes
    - name: copyHtml
      copy: src=./index.html dest=/var/www/html/index.html owner=vagrant

在网页端安装php。

    • 下記のことをansible-playbook.ymlに追記する

hello.phpを作成
webサーバでphpをインストールして、hello.phpを表示させる

    - name: installPhp
      yum: name={{item}}
      with_items:
        - php 
        - php-devel
        - php-mbstring
        - php-mysql
      notify:
        - notify
  handlers: 
    - notify
      service: name=httpd state=restarted

在数据库端安装MySQL。

    • 下記のことをansible-playbook.ymlに追記する

dbサーバにmysqlをインストール
database作成、ユーザ作成、password設定

- hosts: db
  tasks: 
    - name: installMysql
      yum: name=mysql-server
    - name: startMysql
      service: name=mysqld state=started enabled=yes

可以用ansible-playbook命令来完成这个任务。

    • webへのapacheのインストール

 

    • 自動起動設定

 

    • index.htmlの準備

 

    • 必要なPHPパッケージのインストール

 

    • DBへのmysqlのインストール

 

    自動起動設定

应该是可以的。

触动我内心的事情

    • 冪等性が保たれるおかげで、ansible-playbook.ymlを試しながら少しずつ書き足せる。

webにapacheをインストールするのを書いてansible-playbook実行、OKそうだったらdbにmysqlをインストールするのを書き足して、またansible-playbook実行。と試せる。
この時、webはapacheインストールがもう終わっているので、新しく無駄なことをしない。

给你一小点额外的东西。

    • mysqlでの確認

ssh db
mysql -u dbuser -p mydb
show databases;

bannerAds