Ansible使用

一. 入门

1. 添加一台机器

   1)编辑/etc/ansible/hosts文件

    2)添加本机的public SSH key 到目标机器的authorized_keys

    3)添加本机的私钥到Ansible (可以省略)

    4)运行ansible all -m ping 测试是否添加成功

 2. Ansible命令格式

      1)ansible命令主体——ansible/ansible-playbook

      2) 被操作的目标主机的正则表达式

      3)指定要使用的模块

      4)传入的参数

      

      

     

  3.Ansible执行命令的流程图如下:

    

 

    4. Ansible命令详解

        -a: 指定传入模块的参数

        -C -D:两个一起使用,检查hosts规则文件的修改

         -I:限制匹配规则的主机数

        --list-hosts :显示所有匹配规则的主机数

        -m -M:指定所使用的模块和模块的路径

        --syntax-check:检查语法

        -v:显示详细的日志

       

二. 使用Ansible Inventory

      Inventory

      Ansible可以同时操作属于一个组的多台主机,组和主机之间的关系通过Inventory文件配置。默认的文件路径为/etc/ansible/hosts

     中文:库存

     作用:分组

     示例:

    

    []中的是组名,一个主机可以属于不同的组。如:192.168.146.5可以同时属于web组和mySQL组。这时,指定web组和mySQL组都可以操作这台机器。

    1. 自定义链接端口

            在编写hosts文件时,在域名或者ip后,加上冒号端口。

            如:192.168.146.5:5000

                    one.example.com:6000

    2. 起别名,不用root用户登录

        如: jumple ansible_ssh_port=5555 ansible_ssh_host=192.168.146.5 ansible_ssh_user=paas

   3. 如果机器太多,但是时连续的,写起来比较麻烦,可以通过以下方式写

       如:

            [vim]

            vim[1:50].example.com

            vim[a-f].example.com

    4. Inventory参数选项

        ansible_ssh_hosts

        ansible_ssh_port

        ansible_ssh_user

        ansible_ssh_pass  ssh 密码

        ansible_sudo_pass sudo 密码

        ansible_sudo_exe

        ansible_connection 与主机的连接类型。比如:local,ssh或者paramiko

        ansible_ssh_private_key_file

        ansible_shell_type 目标主机的shell类型

        ansible_pyton_interpreter

三. Ansible的Patterns

      在Ansible中,Patterns是指我们通过类正则表达式的方式,决定与哪台主机进行交互。

      1. 所有hosts主机:all 或者*

       2.通过域名或者ip指定一台机器

       3.指定一组连续的机器

          如:ansible 192.168.1.* -m ping 指定192.168.1/24段的所有机器

       4.指定一组不相关的机器

          如:ansible one.example.com:two.example.com -m ping 指定one two两台机器

四. Ansible的Ad-Hoc

      临时命令,类似与shell命令

      1. 指定用户执行shell命令

           ansible web -a "/usr/bin/foo" -u username 

       2. 使用sudo

            ansible web -a "/usr/bin/foo" -u username --sudo[--ask-sudo-pass]

      3. 文件管理

          创建文件夹:ansible web -m file -a "dest=/path/to/c mode=755 owner=mdehaan group=mdehaan state=directory"

         拷贝文件:ansible web -m copy -a "src=/etc/hosts dest=/tmp/hosts"

    4. 软件包管理

        确认一个软件包已经安装,但不去升级

        ansible web -m yum -a "name=acme state=present"

        确认一个软件包的安装版本:

        ansible web -m yum -a "name=acme-1.5 state=present"

       确认一个软件包还没有安装:

       ansible web -m yum -a "name=acme state=absent"

   5. 其他模块

       git模块:git相关

       service模块:系统服务相关

       setup模块: 系统环境相关

      如:如何执行一个耗时的任务

      ansible all -B 3600 -P 0 -a "/usr/bin/long_running_operation --do-stuff"

      -B 3600 表示最多运行60分钟,-P 0 表示不获取状态

       ansible all -B 1800 -P 60 -a "/usr/bin/long_running_operation --do-stuff"

      -B 1800 表示最多运行30分钟,-P 60 表示每隔一分钟获取一次状态

五. 了解Ansible Playbook简介

      Playbook可用于声明配置,在Playbook中以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤,并且可以同步或者异步的发起任务。

posted @ 2020-03-21 18:49  出水芙蓉·薇薇  阅读(237)  评论(0编辑  收藏  举报