快捷搜索:

您的位置:澳门新葡4473网站 > 新葡亰平台娱乐 > 用Google Cloud Plateform使用ansible创建新实例

用Google Cloud Plateform使用ansible创建新实例

发布时间:2019-11-03 04:16编辑:新葡亰平台娱乐浏览(74)

    谷歌大法好,退aws保平安

    一、初识Ansible 

    ---假设自己现在有一个电脑(本机),先用谷歌云创一个服务器(主机) ,再通过ansible在谷歌云上创建一个服务器(节点)并进行控制

    介绍:

     

      Ansible 使用 模块(Modules)来定义配置任务。模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等。Ansible剧本(YAML语言编写)角色映射到 节点/虚拟机上,以对这些节点/虚拟机 进行编排有序的执行。Ansible支持ad-hoc任务:管理任务(不必幂等)以在多个节点/虚拟机上执行。Ansible具有无代理架构:你不需要在配置的节点/虚拟机上安装Ansible(然而,这些节点必须安装python环境),Ansible 通过SSH或者通过PowerShell(Windows机器)从单个控制机器上配置管理节点/虚拟机,并且能够支持并行配置多个节点。Ansible 可以用来配置 类unix系统或 Windows节点/虚拟机。

    先把自己的公钥加到元数据里面,在google cloud plateform创建一个新实例

    基本特点:

    本机连接主机,安装ansible和pip,再用pip安装一个叫apache-libcloud,配置完成

    • 安装部署简单,支持多种方式安装(yum,git等)
    • 支持分类过滤管理主机
    • 轻量级,被管理端无需安装特定agent(需有python、ssh环境)
    • 模块众多,可以满足我们的需要
    • 开发社区活跃
    • Ansible playbook 剧本
    • 支持各种公有云、私有云平台
    • 基于Push推送方式,可以随时修改
    • 幂等性(已经存在的修改后的状态,再次执行这个任务时,不会进行任何修改)

    打开谷歌云控制台,创建凭据,拿到json文件,并把它扔到主机里面

    如图:

    利用ssh-keygen生成密钥对,并将公钥传入他自己的authorized_key里面,同时也要把主机公钥传到谷歌云的ssh里面

    图片 1

    然后开始写playbook脚本(参考网址:)

      注:上图是从官方介绍视频中的截图。用户通过ansible 自动化引擎, 使用playbook ,插件、模块去去管理被控制主机。并可以结合CMDB管理系统。

     图片 2

    二、Ansible运行环境

     

    1.ansible的安装支持多种方式。

    vars这里面的参数可以从创建实例后里面的命令行里面找到

    官方建议:

    gce里面的instancename自己可以改,也可以加上一行zone 指定一下创建主机时候的区域

    • 如果你想在Red Hat Enterprise Linux (TM), CentOS, Fedora, Debian, or Ubuntu上,运行最新版本的Ansible版本,推荐使用包管理器,如yum,apt-get.
    • 对于其它安装选项,推荐使用pip 包管理器进行安装
    • 如果想要使用最新的功能可以跟踪开发版本,从github上进行git到本地,进行使用

    tags的话,写成这样

    2.控制机要求:

    图片 3

      Ansible 可以运行在有python 2.6或者2。7环境的类unix 环境。windows 暂不支持

    接下来就是等它22端口开启,然后把这个新建好的实例放在group里面

    3.被控制节点要求

    ok,实例创建完成,可以以root形式连接节点了

      控制节点需要和 Ansible 被控制节点通信,通常使用ssh 进行连接。另外也需要python环境。

    三、Ansible 安装

    1.控制管理机安装(安装方式有多种,源码,pip等方式),我们这里使用git 源码安装方式进行部署

    [root@docker ~]# git clone git://github.com/ansible/ansible.git --recursive
    [root@docker ~]# cd ansible/
    

    进行源码安装

    [root@docker ansible]# make && make install
    

    先安装pip包管理工具,然后安装ansible 程序所使用的几个python模块

    [root@docker ansible]# easy_install pip
    [root@docker ansible]# pip install paramiko PyYAML Jinja2 httplib2 six
    

    更新ansible 代码时用到的两条命令

    [root@docker ansible]# git pull --rebase
    Current branch devel is up to date.
    [root@docker ansible]# git submodule update --init --recursive
    

    2.检查验证

    [root@docker ansible]# ansible --version
    ansible 2.3.0
      config file =
      configured module search path = Default w/o overrides
    

    三、配置Ansible 尝试下管理主机

    1.默认配置文件在你git下载源码的目录ansible目录中

    /root/ansible/bin/ansible
    

    2.创建hosts存放目录,并编写hosts文件

    [root@docker ansible]# mkdir -pv /etc/ansible/
    mkdir: created directory '/etc/ansible/'
    

    从安装文件中,拷贝hosts

    [root@docker ansible]# cp /root/ansible/examples/hosts /etc/ansible/.
    

    编写hosts文件,添加1个主机

    3.创建俩docker 容器吧

    [root@docker ~]# docker run -d -it --name centos-1 centos_sshd_1
    b032a6c8b4014837181029059661104373db8a6190a1f854ae5ff701b961a546
    
    [root@docker ~]# docker run -d -it --name centos-2 centos_sshd_1
    cc647f916437df70b54096bcf676804114d1558124234b7716aee68271414f27
    

    容器创建完,默认已经启动了sshd 服务开启22端口(这里可以查看后续我发的Docker 自定义镜像的文章),我们查看下它们的ip

    [root@docker ~]# docker exec centos-1 hostname -I
    172.17.0.2 
    [root@docker ~]# docker exec centos-2 hostname -I
    172.17.0.3 
    

    4.将上面2个被控制主机的ip 添加到 hosts 文件中,并进行通信测试

    打开/etc/ansible/hosts文件,在末尾按照以下格式添加。

    [cenots_group]
    172.17.0.2
    172.17.0.3
    

    添加完成后,在控制主机上使用 ping 模块进行测试,如下:(约定:被控主机称为client,控制主机称为managent,以下类似)

      所有主机:

    [root@docker ~]# ansible '*' -m ping --ask-pass
    SSH password: 
    172.17.0.3 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    172.17.0.2 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    

      指定组的方式:

    [root@docker ~]# ansible centos_group -m ping --ask-pass
    SSH password: 
    172.17.0.2 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    172.17.0.3 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    

      指定单个主机的方式:

    [root@docker ~]# ansible '172.17.0.3' -m ping --ask-pass
    SSH password: 
    172.17.0.3 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    

    解释:ansible 命令后面,跟的第一个参数,也就是我们hosts 文件里面的主机清单(可以指定单个主机ip,也可以是组,也支持正则匹配); 第二个参数是使用-m 指定模块,这里我们用了 ping模块。 --ask-pass 这个是当我们使用主机密码来进行ssh认证时的参数,多次输入后,会感觉比较麻烦。推荐使用密钥的方式,安全又方便。下面说下如何用公钥

    5.使用密钥来进行ssh 远程访问

    先在management 上生成公钥私钥对

    [root@docker ~]# ssh-keygen -t rsa -C "management"
    

    将公钥放到使用 ssh-copy-id命令,上传到client 上面去。

    [root@docker ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.0.2
    
    [root@docker ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.0.3
    

    现在再试下管理命令,不用输入密码了

    [root@docker ~]# ansible centos_group -a "/bin/echo Hello world"
    172.17.0.3 | SUCCESS | rc=0 >>
    Hello world
    
    172.17.0.2 | SUCCESS | rc=0 >>
    Hello world
    

     ok,等下一次学习Inventory(资源清单)时,再来分享吧。

    注:ansible是第二次开始写的连载系列文章,如果喜欢可以关注哦。如果感觉有不好的地方,一定要不吝赐教哈。我会非常非常感激的。另外,如果你觉得本文对你有帮助,欢迎转载,但务必要注明出处啊。

    使用 Ansible 高效交付 Docker 容器  http://www.linuxidc.com/Linux/2015-10/124233.htm

    使用Ansible批量管理远程服务器  http://www.linuxidc.com/Linux/2015-05/118080.htm

    Ansible安装配置与简单使用  http://www.linuxidc.com/Linux/2015-07/120399.htm

    在 CentOS 7 中安装并使用自动化工具 Ansible  http://www.linuxidc.com/Linux/2015-10/123801.htm

    Ansible和Docker的作用和用法  http://www.linuxidc.com/Linux/2014-11/109783.htm

    Ansible批量搭建LAMP环境 http://www.linuxidc.com/Linux/2014-10/108264.htm

    Ansible :一个配置管理和IT自动化工具  http://www.linuxidc.com/Linux/2014-11/109365.htm

    Ansible 的详细介绍:请点这里
    Ansible 的下载地址:请点这里

    本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138104.htm

    图片 4

    本文由澳门新葡4473网站发布于新葡亰平台娱乐,转载请注明出处:用Google Cloud Plateform使用ansible创建新实例

    关键词:

上一篇:k8s入门系列之集群安装篇

下一篇:没有了