ansiblie命令基础

参数用途

        ansible -i   /home/admin/hosts

           -i 指定本地的hosts主机清单文件
           如果不使用 -i 指定hosts 默认会去用 /etc/ansible/hosts清单文件

        ansible -f  10

          -f 指的是并发数,表示同时返回10台受控主机命令的结果 需要根据实际情况调整参数值提高ansible执行命令的并发度

        ansible -m yum -a "name=httpd state=latest"

          -m 指定调用的ansible模块

          -a 表示给调用的模块传递的参数

       主机别名

          [webserver]
              nginx    192.168.1.1
              mysql   192.168.1.2
         ansible以别名的方式来对受控端进行区分,IP地址太多的时候分不清各个IP的用途

  ansible模块解释 

       命令模块 
           command shell 模块本质上执行的都是基础命令 默认是执行command模块
           command模块 不支持管道类型的命令
           shell模块 支持管道shell命令

           理论上ansible -m shell 可以执行任何远程命令操作,但是多次调用ansible -m shell命令的时候,ansible并不会判断是否重复在执行.而其他模块是可以先判断是否在重复操作。

       安装模块

            yum模块

              state字段

                absent        移除卸载指定包

                present       正常安装包

                latest           安装最新版本的包

       配置模块

             copy模块

                受控端主机必须存在相应的目录和文件,并且可以设置相应的文件权限和属主和属组.

               1.把控制端的一个被修改的文件推送到所有被控端的主机上
                   ansible appserver -m copy -a "src=/home/admin/a.conf dest=/etc/a.conf owner=root group=root mode=777 backup=yes"
               2.copy模块写入内容到远程主机的一个文件中
                  ansible appserver -m copy -a "content=helloword dest=/etc/a.conf"

             file模块

                 file模块和copy模块最大的不同是,copy模块只能拷贝和创建文件.file模块是为了创建和递归授权远程目录,而不是拷贝文件

                 ansible apperserver -m file -a "path=/etc/ owner=admin group=admin mode=777 recurse=yes"

                 state字段

                      touch          表示创建一个新文件

                      directory     表示创建一个新的目录

             get_url模块

                从网络上下载对应的文件下载到被控端的主机上

                 ansible appserver -m get_url -a "url=http://www.baidu/index.html dest=/etc/index.html  checksum=md5:7be4568"

                 url参数可以使用http,https,ftp等协议

                checksum参数可以检查网络文件是否被修改过

       服务管理模块

               service模块

               ansible appserver -m service -a "name=httpd state=started enabled=yes"

       用户管理模块

              user模块

                   创建和删除用户

              group模块

                   创建和删除用户组

        

       定时任务模块

      

       挂载模块

          mount

         

      防火墙模块

          selinux

          firewalld

       

ansible使用普通用户执行命令

       1.如果ansible控制机拷贝的公钥到受控端主机上是普通用户的公钥,那么执行在主控端执行ansible命令的时候也一定要用对应的普通用户,用root执行ansible命令都不行

       2.使用普通用户执行ansible命令的时候有些情况需要用到root权限

       3.visudo 设置无密码配置需要在被控端主机配置修改

1:vim /etc/ansible/ansible.cfg,开启如下选项

[privilege_escalation]  ##这一部分为提升权限的参数,如果使用普通用户需要开启

become=True
become_method=sudo
become_user=root
become_ask_pass=False



2:sudo visudo 

admin  ALL=(ALL)       NOPASSWD:ALL     ##无密码登陆
View Code

     

ansible远程拷贝

     ansible无法同时拷贝一个目录下的多个文件,需要使用scp远程拷贝命令

     批量拷贝
         sh "scp -r /var/lib/jenkins/workspace/dataprocessProject/dataprocess/analysis-common/target/*.jar admin@192.168.30.102:/app/taishi/flink/flink-1.12.2/lib/"

     单个拷贝
        sh "ansible appservertest --user=admin -m copy -a 'src=/var/lib/jenkins/workspace/dataprocessProject/dataprocess/analysis-common/target/analysis-common-1.2.4.4-SNAPSHOT.jar dest=/app/taishi/flink/flink-1.12.2/lib/ mode=777'"

posted @ 2021-05-15 17:21  不懂123  阅读(225)  评论(0编辑  收藏  举报