ansible也有相似rubygems.org 的網站, 讓ansible用戶分享ansible功能模塊
網址 https://galaxy.ansible.com/nginx
直接使用ansible-galaxy
安裝一些模塊git
$ ansible-galaxy install username.rolename
固然也支持 批量安裝
, Ansible 提供了兩種方式配置依賴模塊,能夠批量安裝模塊github
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
建立 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/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 }
是這個role的入口文件,命令從main.yml開始執行
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
用於jinjia2模板文件
默認的配置變量寫在defaults/main.yml裏
通常用來重啓服務,好比
--- # this might be in a file like handlers/handlers.yml - name: restart apache service: name=apache state=restarted