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