直到Ansible初学者能够自动化配置vim和zsh

要做的事情

学习开源软件Ansible的同时,使其能够自动应用主机操作系统的vim和zsh配置到虚拟环境中。

请参考以下链接的文章,前提是您已经设置好了Vagrant的主机环境:http://qiita.com/nl0_blu/items/97d54e78789335b415fb

研發環境

    • OS Ⅹ EL Capitan

 

    • Vitualbox(5.1.0)

 

    • Vagrant(1.9.1)

 

    Ansible(2.2.1.0)

1. 安装Ansible

安装Ansible

$ brew install ansible

确认安装

$ ansible --version

创建Inventory文件并执行ansible命令

清单文件:用于描述Ansible处理目标主机信息

$ vi hosts
----- 編集開始-----
[A]
192.168.33.10

[B]
192.168.33.11
----- 編集終了-----

Ansible的执行示例

ansible [组名] -m [模块名] -a [“动作”]

--Inventoryファイルに書かれた対象全てにpingモジュール実行--
$ ansible all -i hosts -m ping

--Aにpingモジュール実行--
$ ansible A -i hosts -m ping

如果想在运行时省略输入主机,应该如何编辑ansible.cfg文件?


[defaults]
hostfile = ./hosts

$ ansible all -m ping

使用playbook

剧本:将要执行的操作整理在一起进行了描述的文件。

我們要創建一個playbook,用於在目標主機上添加帳戶。

①一般写法下


- hosts: all  #対象ホスト
  sudo: yes  #管理者権限
  tasks:  #実行する処理
    - name: add a client user   #処理内容(任意)
      user: name=client  #"client"をアカウント名として作成

如果要使用”client”作为变量名进行管理的情况下


- hosts: all
  sudo: yes
  vars:
    username: client
  tasks:
    - name: add a client user
      user: name={{username}}

如果在运行时进行输入


- hosts: all
  sudo: yes
  vars_prompt:
    username: "Enter username"
  tasks:
    - name: add a client user
      user: name={{username}}

试着运行一下…
ansible-playbook [playbook文件名]

$ ansible-playbook playbook.yml



完了ならchanged=1とか出る

4. 其他创建playbook的示例

在官方文档中查找所需模块的信息
http://docs.ansible.com/ansible/modules_by_category.html

使用Playbook在Inventory文件中描述的主机A上进行Apache的安装和自动启动。


- hosts: A
  sudo: yes
  tasks:
    - name: install apache
      yum: name=httpd state=latest  #yumモジュールからapacheの最新版(latest)をインストール
    - name: start apache and enabled
      service: name=httpd state=started enabled=yes  #apacheの有効化

将本地文件复制到B主机的playbook。


- hosts: B
  sudo: yes
  tasks:
    - name: copy index.html
      copy: src=./test.html dest=./test.html owner=root group=vagrant mode="u=rw,g=r,o=r"

将必要的软件包一次性安装到所有主机的playbook中。


- hosts: all
  sudo: yes
  tasks:
   - name: need all package install
     yum: name="{{item}}" state=latest
     with_items:
      - php
      - php-mysql
      - httpd
      - mariadb
      - mariadb-server
      - MySQL-python

5(本题)创建一个将主机操作系统的zsh和vim配置反映到Vagrant主机上的playbook。

[通过实践了解到的事情]

    • .ymlは書き方に癖あり。(“-“の位置はズレないようする、スペースもフォーマットがある)

 

    libselinux-pythonインストールしなきゃ色々事故る

创建库存文件

$ vi hosts
----- 編集開始-----
[server]
192.168.33.10

[client]
192.168.33.11
----- 編集終了-----

[创建Playbook]
按照顺序(从任务开始)…
1. 安装依赖包(包括libselinux-python,可能混杂着不必要的包)
2. 安装vim
3. 将主机OS上的.vimrc复制到客户机OS
4. 安装zsh
5. 将登录shell更改为zsh
6. 将主机OS上的.zshrc复制到客户机OS中



- hosts: all
  user: vagrant
  sudo: yes
  tasks: 
    - name: requires install #①
      sudo: true
      yum: name={{ item }} state=present
      with_items:
    - gcc
    - git
    - mercurial
    - ncurses-devel
    - lua
    - lua-devel
    - perl
    - perl-devel
    - perl-ExtUtils-Embed
    - python
    - python-devel
    - libselinux-python

- name: install vim #②
  yum: name=vim state=present

- name: copy .vimrc file to vagrant home #③
  copy: src=~/.vimrc dest=~vagrant/.vimrc owner=vagrant group=vagrant mode="u=rw,g=r,o=r"


- name: install zsh #④
  yum: name=zsh state=installed

- name: set zsh as default shell for vagrant user #⑤
  command: chsh -s '/bin/zsh' vagrant

- name: copy .zshrc file to vagrant home #⑥
  copy: src=~/.zshrc dest=~vagrant/.zshrc owner=vagrant group=vagrant mode="u=rw,g=r,o=r"


这个playbook也可以在目录中按照以下方式整理(分离vim的playbook和zsh的playbook)

├ Vagrantfile
└ provisioning
├ hosts
├ main.yml
└ roles
├ vim
│ └ tasks
│   └ main.yml
├ zsh
│ └ tasks
│   └ main.yml

---
 # main.yml

- hosts: all
  user: vagrant
  sudo: yes
  roles:
    - vim
    - zsh
- name: requires install
  yum: name={{ item }} state=present
  with_items:
    - gcc
    - git
    - mercurial
    - ncurses-devel
    - lua
    - lua-devel
    - perl
    - perl-devel
    - perl-ExtUtils-Embed
    - python
    - python-devel  
    - libselinux-python

- name: install vim
  yum: name=vim state=installed

- name: copy .vimrc file to vagrant home
  copy: src=~/.vimrc dest=~vagrant/.vimrc owner=vagrant group=vagrant mode="u=rw,g=r,o=r"
- name: install zsh
  yum: name=zsh state=installed

- name: set zsh as default shell for vagrant user
  command: chsh -s '/bin/zsh' vagrant

- name: copy .zshrc file to vagrant home
  copy: src=~/.zshrc dest=~vagrant/.zshrc owner=vagrant group=vagrant mode="u=rw,g=r,o=r"

在Vagrant主机上运行ansible有几种方法。

在一般的Vagrantfile中添加以下内容

config.vm.provision "ansible" do |ansible|
    ansible.playbook = "provisioning/main.yml"
    ansible.inventory_path = "provisioning/hosts"
    ansible.limit = 'all'
end

通过使用’$ vagrant provision’命令来执行所创建的playbook。

可以从ansible-playbook main.yml运行

ansible相关命令

ansible-playbook (playbook名) –syntax-check playbookの文法の確認

ansible-playbook (playbook名) –list-task playbookのタスクの一覧確認

ansible-playbook (playbook名) –check playbook実行確認(実際に実行はしない)

仅需要一种选择,在中国的母语中解释以下内容,请参考。


这个链接是关于 “shifumin” 在其博客上发表的一篇文章,发表日期是2015年8月26日,时间是21:50:00。

https://www.tcmobile.jp/dev_blog/devtool/ansibleのplaybookをいい感じに管理したい/
这个链接是关于在 “tcmobile.jp” 的开发博客上如何有效管理 “ansible playbook” 的文章。

http://qiita.com/snaka/items/d5a8004afbfe665e1d3a
这个链接是指 “qiita.com” 上的一篇关于 “snaka” 所写的文章,主题是 “d5a8004afbfe665e1d3a”。

广告
将在 10 秒后关闭
bannerAds