标签:
Ansible是自动化运维的工具,基于Python开发,实现了批量系统配置、批量程序部署、批量运行命令等功能。
Ansible是基于模块工作的,ansible提供一个框架,通过模块实现批量部署。
使用epel的源安装,添加epel源此处不详述。
# yum install ansible --enablerepo=epel
生成SSH公钥密钥对
# ssh-keygen -t rsa -P ‘‘
拷贝公钥到被管理端的服务器
# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys # chmod 600 /root/.ssh/authorized_keys
确认可以用密钥连接到管理端的服务器
定义主机组,可以使用主机名或IP
# vi /etc/ansible/hosts [tests] test167 test154
另外,Ansible的配置文件在 /etc/ansible/ansible.cfg,默认不需要修改。
# ansible tests -m ping
# ansible tests -m command -a ‘uptime‘ # ansible tests -m shell -a ‘date‘ # ansible tests -m command -a ‘cat /etc/resolv.conf‘
# ansible tests -m setup
# ansible tests -m copy -a ‘src=/home/ec2-user/test.txt dest=/tmp/test222.txt mode=0644‘
# ansible tests -m user -a ‘name=test comment="test user" uid=1000 password="crypted-password"‘
密码生成方法:
# yum install python-pip # pip install passlib # python -c "from passlib.hash import sha512_crypt; import getpass; print sha512_crypt.encrypt(getpass.getpass())"
# ansible tests -m yum -a ‘name=vsftpd state=present‘
# ansible tests -m service -a ‘name=vsftpd state=started enabled=yes‘
查看
# ansible tests -m shell -a ‘ps -ef| grep ftp‘ # ansible tests -m shell -a ‘ss -tln| grep 21‘
# ansible tests -m raw -a ‘ss -tln| grep 21‘
列出所有已安装模块
# ansible-doc -l
查看某模块的简介
# ansible-doc -s ping
使用pull模式,(默认是push模式)
Playbook是由一个或多个“play”组成的列表,可以让它们联同起来按事先编排的机制执行
# ansible-playbook test.yml
Playbook文件的格式,YAML是一个可读性高的标记语言。
Role可以把playbook分成一个一个模块,使结构更清晰。
包括 tasks, defaults, vars, files, templates, mata, handlers 各目录,其中 tasks 是必需的。
本例子是最基本的构成,只包括tasks
# mkdir -p roles/apache2/tasks
--- - name: Install apache2 (RedHat). yum: name=httpd when: "ansible_os_family == ‘RedHat‘" - name: Install apache2 (Debian). apt: name=apache2 when: "ansible_os_family == ‘Debian‘"
--- - name: Install Apache2 hosts: tests remote_user: root roles: - apache2
# ansible-playbook site.yml
https://github.com/ansible/ansible-examples
ansible-vault 对配置文件(比如playbooks),进行基于密码的加密,防止敏感信息泄露
# ansible-vault encrypt ./site.yml
# ansible-vault create filename
# ansible-playbook ./site.yml --ask-vault-pass
# ansible-vault decrypt ./site.yml
Ansible使用简单,不需要客户端,模块化程度高,定制灵活,当管理服务器的数量多的时候,能起到很大的帮助。是一个很好的自动化运维工具。
标签:
原文地址:http://www.cnblogs.com/ee900222/p/ansible.html