[Ansible學習一] Ansible Galaxy使用小記

[Ansible學習一] Ansible Galaxy使用小記

ansible也有相似rubygems.org 的網站, 讓ansible用戶分享ansible功能模塊
網址 https://galaxy.ansible.com/nginx

安裝模塊

直接使用ansible-galaxy 安裝一些模塊git

$ ansible-galaxy install username.rolename

固然也支持 批量安裝, Ansible 提供了兩種方式配置依賴模塊,能夠批量安裝模塊github

方式1 使用 roles.txt

# roles.txt
user1.role1,v1.0.0
user2.role2,v0.5
user2.role3

配置規則格式是 username.rolename[,version] 的形式web

$ ansible-galaxy install -r roles.txt

方式1 不能指定安裝路徑,也不能指定安裝名字apache

ansible提供了更高級的配置yml的格式ruby

方式2 使用yml格式的配置文件

建立 install_roles.yml 配置文件服務器

# install_roles.yml

# from galaxy
- src: yatesr.timezone

# from github
- src: https://github.com/bennojoy/nginx

# from github installing to a relative path
- src: https://github.com/bennojoy/nginx
  path: vagrant/roles/

# from github, overriding the name and specifying a specific tag
- src: https://github.com/bennojoy/nginx
  version: master
  name: nginx_role

# from a webserver, where the role is packaged in a tar.gz
- src: https://some.webserver.example.com/files/master.tar.gz
  name: http-role

# from bitbucket, if bitbucket happens to be operational right now :)
- src: git+http://bitbucket.org/willthames/git-ansible-galaxy
  version: v1.4

# from bitbucket, alternative syntax and caveats
- src: http://bitbucket.org/willthames/hg-ansible-galaxy
  scm: hg

安裝配置好的role模塊app

$ ansible-galaxy install -r install_roles.yml

能夠在項目裏建立ansible.cfg配置文件,配置role模塊下載位置 elasticsearch

ansible.cfg學習

[defaults]
hostfile = inventory
roles_path = roles

建立模塊

好比建立一個acme模塊,

$ ansible-galaxy init acme --force

文件結構

.
  ├── README.md
  ├── defaults
  │   └── main.yml
  ├── files
  ├── handlers
  │   └── main.yml
  ├── meta
  │   └── main.yml
  ├── tasks
  │   └── main.yml
  ├── templates
  ├── tests
  │   ├── inventory
  │   └── test.yml
  └── vars
      └── main.yml

Meta Data - meta/main.yml

meta/main.yml 用來配置模塊一些元信息,好比支持的平臺,Ansible最小依賴版本,
這個模塊的標籤,依賴,做者的信息等等。

ansible-galaxy init 建立項目生成的模板以下

---
galaxy_info:
 author: John Doe
 description: Quick and easy acme web installer.
 company: Acme
 license: MIT
 min_ansible_version: 1.9
 platforms:
 - name: EL
   versions:
   - all
 galaxy_tags:
   - acme
   - installer
   - web
dependencies:
 - { role: username.common, some_parameter: 3 }
 - { role: username.iptables, open_port: 80 }

dependencies 用於配置依賴的其它模塊

好比

dependencies:
  - { role: stouts.elasticsearch }

也能夠傳參數

dependencies:
  - { role: stouts.elasticsearch, elasticsearch_home: "{{ install_path_variable }}", elasticsearch_http_port: 8900 }

task/main.yml

是這個role的入口文件,命令從main.yml開始執行

files

files 目錄是放一些文件用的,好比能夠用copy命令,把files目錄下的文件複製到服務器上

- name: copy source.list.{{ansible_distribution_release}} file
  copy: src=sources.list.{{ansible_distribution_release}} dest=/etc/apt/sources.list backup=yes

templates

用於jinjia2模板文件

defaults/main.yml

默認的配置變量寫在defaults/main.yml裏

handlers/main.yml

通常用來重啓服務,好比

---
# this might be in a file like handlers/handlers.yml
- name: restart apache
 service: name=apache state=restarted
相關文章
相關標籤/搜索