使用Ansible自动化您的(云或者本地)机器

时间:2022-04-21
本文章向大家介绍使用Ansible自动化您的(云或者本地)机器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Ansible任务执行多次和执行一次的效果一样。bash脚本没有很多额外的编码,运行多次通常不安全。而Ansible的任务根据“事实”(收集的系统和环境信息)(“上下文”)再运行。

设计原则

  • 异常简单的设置过程和一个最小的学习曲线。
  • 管理机器非常快速,并且是同步的。
  • 避免自定义代理和开放多余的端口。通过利用现有的SSH守护进程进行代理。
  • 对于基础设施的描述,既面向机器,也易于人来阅读。
  • 注重安全性和易于审计/检查/重写内容。
  • 立即管理新的远程机器,无需引导任何软件。
  • 允许使用任何动态语言进行模块开发,而不仅仅是Python。
  • 可用作非root用户。

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上进行。