ansible 基本概念,ad-hoc操作

ansible 基本概念,ad-hoc操作

ansible 是一个自动化的工具,主要用来管理配置文件,应用部署等作用。

非常高效

通过ssh协议,不需要mq,数据库,agentless的不需要在client上面安装agent,比较轻量级,兼容性比较好。

ansible一般参数

并发10个

$ ansible atlanta -a "/sbin/reboot" -f 10

指定user

$ ansible atlanta -a "/usr/bin/foo" -u username

ad-hoc任务

一般用来做一些一次性的工作,ansible还支持所谓的playbook,一段剧本,可以保持下来复用。

比如说安装一个软件啊,开一个服务啊,执行一条命令什么的。

我们先从最简单的ping开始。

1. ping模块

[root@monitor ]# ansible test -m ping
120.25.145.42 | success >> {
    "changed": false,
    "ping": "pong"
}

很简单加个-m 参数代表用ping这个模块。他返回两个,changed ,和ping ,

2. shell模块

很简单,就是执行一个shell命令。

比如说echo hello

[root@monitor ~]# ansible test  -m shell -a ‘echo hello‘
120.25.145.42 | success | rc=0 >>
hello

-a 代表shell模块的参数

3. copy,file文件传输模块

copy可以把本机的文件远程传输到目标机器上

例如

[root@monitor ~]# ansible test -m copy -a "src=/etc/hosts dest=/tmp/hosts"
120.25.145.42 | success >> {
    "changed": false,
    "checksum": "9d85f37d33366a82f2486c304c4c420a214f2aba",
    "dest": "/tmp/hosts",
    "gid": 0,
    "group": "root",
    "mode": "0644",
    "owner": "root",
    "path": "/tmp/hosts",
    "size": 353,
    "state": "file",
    "uid": 0
}

file模块可以修改文件的所有人,所属组,mode。

[root@monitor ~]# ansible test -m file -a " dest=/tmp/hosts owner=nobody"
120.25.145.42 | success >> {
    "changed": true,
    "gid": 0,
    "group": "root",
    "mode": "0644",
    "owner": "nobody",
    "path": "/tmp/hosts",
    "size": 353,
    "state": "file",
    "uid": 99
}

这些参数同样可以传到copy 模块里面。copy模块的实现好像用的scp。

4. yum,apt模块,软件管理的模块。

ansible-doc yum 看下参数说明

主要是state这个参数,代表安装,卸载等。

state
        Whether to install (`present‘, `latest‘), or remove (`absent‘)
        a package. (Choices: present, latest, absent) [Default:
        present]

就三个状态,present,latest,absent,前两个代表安装,后面一个是卸载。很好理解。

用起来就是:

[[email protected] ~]# ansible test -m yum -a "name=ntp state=present"
120.25.145.42 | success >> {
    "changed": false,
    "msg": "",
    "rc": 0,
    "results": [
        "ntp-4.2.6p5-3.el6.centos.x86_64 providing ntp is already installed"
    ]
}

卸载:

[[email protected] ~]# ansible test -m yum -a "name=ntp state=absent"
120.25.145.42 | success >> {
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [
        "Loaded plugins: refresh-packagekit, security\nSetting up Remove Process\nResolving Dependencies\n--> Running transaction check\n---> Package ntp.x86_64 0:4.2.6p5-3.el6.centos will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package     Arch           Version                      Repository        Size\n================================================================================\nRemoving:\n ntp         x86_64         4.2.6p5-3.el6.centos         @updates         1.6 M\n\nTransaction Summary\n================================================================================\nRemove        1 Package(s)\n\nInstalled size: 1.6 M\nDownloading Packages:\nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n\r  Erasing    : ntp-4.2.6p5-3.el6.centos.x86_64                              1/1 \nwarning: /etc/ntp.conf saved as /etc/ntp.conf.rpmsave\nUnable to connect to dbus\n\r  Verifying  : ntp-4.2.6p5-3.el6.centos.x86_64                              1/1 \n\nRemoved:\n  ntp.x86_64 0:4.2.6p5-3.el6.centos                                             \n\nComplete!\n"
    ]
}

5. User 用户管理模块

包括用户和用户组都可以进行管理。

[root@monitor ~]# ansible test -m user -a "name=ss password=‘$6$SZpOojUl/UdHCgBZ$cr17itDcLSvLSQnkCrofKUW9k/.TDmJ6rFJZ3pSxKuJ8DquwRpk0OfEuzSIPsRC0xK7RsBM5K/fHEMwyPtX8s/‘"
120.25.145.42 | success >> {
    "append": false,
    "changed": true,
    "comment": "",
    "group": 504,
    "home": "/home/ss",
    "move_home": false,
    "name": "ss",
    "password": "NOT_LOGGING_PASSWORD",
    "shell": "/bin/bash",
    "state": "present",
    "uid": 503
}

password的参数是sha512加密的,

可以用grub-crypt生成,或者是用python的模块生成

python -c "from passlib.hash import sha512_crypt; import getpass; print sha512_crypt.encrypt(getpass.getpass())"

详细可以看http://docs.ansible.com/faq.html#how-do-i-generate-crypted-passwords-for-the-user-module

[root@monitor install-zabbix-playbook]# ansible test -m user -a ‘name=fuck password="$6$rounds=40000$M.jOLGeGue3hPdYb$FTaslz1igc8IKi7TolGxkDrr9XSRLPT0QXtgwRCqac9XsTEqmWagxLY.1s8oQMjuQUI6hlK/DyFb3Kxye5nar0"‘
120.25.145.42 | success >> {
    "append": false,
    "changed": true,
    "comment": "",
    "group": 506,
    "home": "/home/fuck",
    "move_home": false,
    "name": "fuck",
    "password": "NOT_LOGGING_PASSWORD",
    "shell": "/bin/bash",
    "state": "present",
    "uid": 505
}

查看是否修改成功

[root@iZ94wi1x5hoZ ~]# cat /etc/shadow|grep -E ‘fuck|root‘
root:$6$AXHXCLyd$vXQw0C/WuHqEM0htW/c9lGAW03Gm8NXnUD9MSHvz9kjBoqqL/AvhxWBX2/NhAXemFtgJPGUYsP0A8hXDMUgns0:16579:0:99999:7:::
fuck:$6$rounds=40000$M.jOLGeGue3hPdYb$FTaslz1igc8IKi7TolGxkDrr9XSRLPT0QXtgwRCqac9XsTEqmWagxLY.1s8oQMjuQUI6hlK/DyFb3Kxye5nar0:16583:0:99999:7:::

6. Git模块

部署项目用

设置一个repo 就好了,当然你设置git:的repo必须ssh认证。这边是基于https认证的例子。

[root@monitor install-zabbix-playbook]# ansible test -m git -a "repo=https://code.csdn.net/aca_jingru/tomcat.git dest=/data"
120.25.145.42 | success >> {
    "after": "b11ee2f3471fe647a70a514acb22ecf8b1146628",
    "before": null,
    "changed": true
}

7. Service服务模块

启动,停止,重启,reload,对应4个state如下:

  • started
  • stopped
  • restarted
  • reloaded
[root@monitor ~]# ansible test -m service -a "name=httpd state=restarted"
120.25.145.42 | success >> {
    "changed": true,
    "name": "httpd",
    "state": "started"
}

8. facts侦测模块

把主机上面的基本信息全部侦测一般,这个模块一般不单独用,一般都是配合playbook使用,

单独的用的话一般加个filter过滤参数,比如我要获取网卡信息:

[root@monitor ~]# ansible test -m setup -a  "filter=ansible_eth[0-2]"
120.25.145.42 | success >> {
    "ansible_facts": {
        "ansible_eth0": {
            "active": true,
            "device": "eth0",
            "ipv4": {
                "address": "10.116.133.68",
                "netmask": "255.255.248.0",
                "network": "10.116.128.0"
            },
            "macaddress": "00:16:3e:00:00:ab",
            "module": "xen_netfront",
            "mtu": 1500,
            "promisc": false,
            "type": "ether"
        },
        "ansible_eth1": {
            "active": true,
            "device": "eth1",
            "ipv4": {
                "address": "120.25.145.42",
                "netmask": "255.255.252.0",
                "network": "120.25.144.0"
            },
            "macaddress": "00:16:3e:00:18:9b",
            "module": "xen_netfront",
            "mtu": 1500,
            "promisc": false,
            "type": "ether"
        }
    },
    "changed": false
}
时间: 2024-10-04 00:48:33

ansible 基本概念,ad-hoc操作的相关文章

Ansible 七(ad hoc任务)

Ansible 七(ad hoc任务) ansible任务 ad hoc任务就是执行shell命令.或shell脚本. ansible ad-hoc命令 可以执行一些简单的命令,不需要将这些执行的命令特别保存下来. 适合执行简单的命令. ansible playbook 可以解决比较复杂的任务,可以将命令保存下来. 适合执行配置管理或部署客户机. 并行性和shell命令 重启webservers主机组里的所以机器,每次重启10台 ansible webservers -a "/sbin/rebo

ansible常用ad hoc操作

ansible group001 -i hosts.ip -m shell -a "run some shell command" --sudo -f 1 -v

iOS开发最最基础之打包Ad Hoc应用

首先,介绍下什么是Ad Hoc? Ad Hoc简单的定义是:把iOS工程打包成ipa包后,通过Ad Hoc证书签名做分发测试的行为. Ad Hoc证书可以分为两类: 1.99美元的开发者账号生成的. 2.299美元的开发者账号生成的. 由于我没有299美元的开发者账号,故本文只针对99美元的开发者账号的情况作阐述. 接下来,我将从以下5点进行操作描述: 1.AppID(如果有配置好了,可以忽略). 2.certificate 3.device 4.profile 5.Xcode打包 1.AppI

[sql异常]SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的

//执行远程数据库表查询 select * from openrowset( 'SQLOLEDB', '192.168.5.547'; 'sa'; '密码',[数据库名称].[dbo].[表名]) 出现异常: 消息 15281,级别 16,状态 1,第 1 行SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭.系统管理员

Ad Hoc一键分发(iOS开发)

一个可以让你快速.方便.一次配置,终生受益的测试包分发教程.你还在傻傻的用airdrop,qq么? 使用环境: 适合iOS开发者,常需要发布测试包给各类人员,那么以后再也无需多余操作,一键搞定.公司有内网服务器,或用Mac os的同学都可以使用.非越狱手机可以使用,只要正常绑定过证书就没有问题. 以下是教程,相当简单.服务器ip以192.168.1.188为例,端口8080 第一步,配置run script打包ipa并完成ipa上传部署过程,Xcode中打开target->build phase

Ansible 之 概念和常用模块介绍

1  概述 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括如下的特性: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inventory:

ns3模拟无线Ad hoc 网络通信

Ad hoc网络 Ad hoc网是一种多跳的.无中心的.自组织无线网络,又称为多跳网(Multi-hop Network).无基础设施网(Infrastructureless Network)或自组织网(Self-organizing Network).整个网络没有固定的基础设施,每个节点都是移动的,并且都能以任意方式动态地保持与其它节点的联系.在这种网络中,由于终端无线覆盖取值范围的有限性,两个无法直接进行通信的用户终端可以借助其它节点进行分组转发.每一个节点同时是一个路由器,它们能完成发现以

iOS程序发布测试-生成ad hoc证书

转自: http://blog.sina.com.cn/s/blog_68444e230100srdn.html iOS程序发布测试3-生成ad hoc证书 iOS证书分2种,1种是开发证书,用来给你(开发人员)做真机测试的:1种是发布证书,发布证书又分发布到app store的(这里不提及)和发布测试的ad hoc证书. 那ad hoc证书和开发证书区别在哪里?如果你的tester(团队测试人员.客户)都能将测试设备拿到你面前,直接插到你的mac开发机上,你可以直接将程序"灌"进去,

解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法

报错内容是:SQL  Server 阻止了对组件 'Ad Hoc Distributed Queries' 的  STATEMENT'OpenRowset/OpenDatasource'  的访问,因为此组件已作为此服务器安全配置的一部分而被关闭.系统管理员可以通过使用 sp_configure 启用 'Ad Hoc  Distributed Queries'.有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL  Server 联机丛书中的 "外围应用