Ansible任务执行多次和执行一次的效果一样。bash脚本没有很多额外的编码,运行多次通常不安全。而Ansible的任务根据“事实”(收集的系统和环境信息)(“上下文”)再运行。
设计原则
Ansible默认通过SSH协议管理机器。
Ansible安装完成后,不会添加数据库,并且不会有守护进程启动或继续运行。你只需要把它安装在一台机器上(一台笔记本电脑也可以),它可以从这个中心点管理整个远程机器群。当Ansible管理远程机器时,远程机器上不必安装软件,也不需要在这些机器上运行软件,所以当远程机器要迁移到新版本时,不需要更新Ansible。
Playbooks可以被认为是Ansible的主要概念。
Playbooks是Ansible的配置,部署和编排语言。它们可以描述您希望远程系统执行的策略,也可以描述一般IT过程中的一系列步骤。
基本上,可以使用Playbooks来管理远程机器的配置和部署。在更高级的层次上,它们可以对涉及滚动更新的多层次部署进行排序,并且可以将操作委派给其他主机,并且可以与监控服务器和负载平衡器进行交互。
手册被设计成人类可读的,并以基本的文本语言开发。
手册用YAML(类似于标准通用标记语言的子集XML的数据描述语言)语言写成,这种语言的语法,被故意的设计成不像编程语言或脚本,而是一个配置或一个过程的模型。
在我的例子中,我设置了两个带有Vagrant(一个基于Ruby的工具,用于创建和部署虚拟化开发环境)的虚拟机。对于第一个,我已经安装了Ansible,而第二个中,我进行了一些配置。
像我以前的文章中那样配置多机系统。
多机系统的Vagrantfile:
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.define "machine1" do |node1|
node1.vm.network "private_network", ip: "192.168.0.101"
node1.vm.hostname = "machine1"
node1.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 1
end
end
config.vm.define "machine2" do |node2|
node2.vm.network "private_network", ip: "192.168.0.102"
node2.vm.hostname = "machine2"
node2.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 1
end
end
end
在machine1上,使用以下命令安装Ansible:
#vagrant ssh machine1
如果要求输入密码,请输入“vagrant”。
安装Ansible的命令:
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible / ansible
sudo apt-get update
sudo apt-get install ansible
编辑/ etc / ansible / hosts并添加IP 192.168.0.101和192.168.0.102。
为检查一切是否正常,运行以下命令:
ansible all -m ping -s -k -u vagrant
输出应该是:
machine2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
第一个Playbook是在第二台机器上安装Java和Tomcat。
Playbook-tomcat.yml:
- hosts: machine2
vars:
http_port: 80
max_clients: 200
remote_user: vagrant
tasks:
- name: updates a server
apt: update_cache=yes
- name: upgrade a server
apt: upgrade=full
- name: install java
apt: name=default-jdk state=latest
- name: install tomcat
apt: name=tomcat7 state=latest
- name: make sure apache is running
service: name=tomcat7 state=started
ansible-playbook playbook-tomcat.yml -sudo -u vagrant --ask-pass
安装完成后,访问Vagrant ssh machine2并键入java -version。
如果一切正常,你应该看到安装的版本。
Ansible仅安装在一台机器上,可以执行命令在其他机器上安装工具或进行操作,这些操作包括对Playbook进行版本控制,虽然这也可以再GitHub上进行。