自动化工具:ansible(一)

       自动化运维对于互联网人越来越重要。上一篇介绍了一种自动化工具:制作自己个性的RPM包,从这期开始我将花费大量的篇幅来更新现在最火的一种自动化工具:ansible。这一篇先对ansible一些基本概念做个介绍,后面,我会主要是结合实际案例来介绍ansible的功能。

ansible概念:

1. ansible可以帮我们批量完成任务,或者需要完成一些经常重复的工作;

2. ansible不需要agent端,只需要在部署机上面部署ansible即可,通信机制是基于ssh通信;

3. ansible基于python语言编写,所以,里面的一些语法也和python语法很像。

4. ansible最重要的一点:具有幂等性。

ansible配置清单:

/etc/ansible/hosts:受控主机清单

/etc/ansible/ansible.cfg:ansible主配置文件

ansible模块的使用:

用以下命令查看ansible有哪些模块:

扫描二维码关注公众号,回复: 11537127 查看本文章

查看某个模块的使用方法:

commandshell模块:

两者的作用基本一样,但是shell模块比command功能强大,他支持管道,正则表达式等特殊字符;

example:

下一节单独将详细介绍其他模块的使用。

下面让大家看一个自己ansible的例子,有点复杂,写了将近一个半月(部署open stack):

[root@localhost ansible-openstack]# tree 

.

├── ansible-2.5.2-1.el7.ans.noarch.rpm

├── ansible.cfg

├── ansible-openstack.txt

├── config.yml

├── facts

│   └── README

├── group_vars

│   ├── all

│   │   ├── 00_cross_roles.yml

│   │   ├── config.yml

│   │   └── default.yml

│   ├── compute

│   ├── ironic

│   ├── ironic_inspector

│   ├── mariadb

│   ├── mysql

│   ├── os_ha

│   └── proxy_ha

├── hosts

├── playbooks

│   ├── ceph_openstack_relatekey.yml

│   ├── ceph_rados_gateway_lvs_keepalived.yml

│   ├── ceph_rados_gateway.yml

│   ├── cinder_compute_install.yml

│   ├── cinder_controller_install.yml

│   ├── common-tasks

│   │   ├── binding_hosts.yml

│   │   ├── binding_lo_hosts.yml

│   │   ├── create_project_user_and_role.yml

│   │   ├── create_service_credentials_and_endpoints.yml

│   │   ├── mysql_db_user.yml

│   │   └── wait_for_port_on_host.yml

│   ├── compute_extension.retry

│   ├── compute_extension.yml

│   ├── dns.yml

│   ├── glance_install.yml

│   ├── haproxy_keepalived_install.yml

│   ├── haproxy_keepalived_os_install.yml

│   ├── haproxy_keepalived_proxy_install.yml

│   ├── ironic_inspector.yml

│   ├── ironic.yml

│   ├── keystone.yml

│   ├── mariadb_install.yml

│   ├── memcached_install.yml

│   ├── mysql_install.yml

│   ├── neutron_compute.yml

│   ├── neutron_controller_install.yml

│   ├── neutron_network.yml

│   ├── nova_compute.yml

│   ├── nova_controller.yml

│   ├── nova_novncproxy.yml

│   ├── nova_rabbit.yml

│   ├── ntp.yml

│   ├── openstack_compute.yml

│   ├── openstack_install.yml

│   ├── other_rabbit.yml

│   ├── rabbitmq.yml

│   ├── system_init.yml

│   └── vmware_compute.yml

├── README.md

├── roles

│   ├── bind

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── config.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   ├── pre_install.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       ├── named.conf.j2

│   │       └── zone.j2

│   ├── ceph_rados_gateway

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── config.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       └── realserver.sh.j2

│   ├── ceph_rados_gateway_lvs_keepalived

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── config.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   ├── set_fact.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       ├── keepalived.conf_backup

│   │       └── keepalived.conf_master

│   ├── cinder_compute

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── site.yml

│   │   ├── tasks

│   │   │   ├── config.yml

│   │   │   ├── install.yml

│   │   │   ├── main.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       └── cinder.conf.j2

│   ├── cinder_controller

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── site.yml

│   │   ├── tasks

│   │   │   ├── auth.yml

│   │   │   ├── config.yml

│   │   │   ├── customize.yml

│   │   │   ├── db_sync.yml

│   │   │   ├── db.yml

│   │   │   ├── ha.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       └── cinder.conf.j2

│   ├── glance

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── auth.yml

│   │   │   ├── config.yml

│   │   │   ├── db_sync.yml

│   │   │   ├── db.yml

│   │   │   ├── ha.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   ├── pre_install.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       └── glance-api.conf.j2

│   ├── haproxy_keepalived

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── files

│   │   │   ├── check_haproxy.sh

│   │   │   └── haproxy_vrrp_check.py

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── site.yml

│   │   ├── tasks

│   │   │   ├── config.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   ├── pre_install.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       ├── haproxy.cfg.j2

│   │       └── keepalived.conf.j2

│   ├── ironic

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── files

│   │   │   ├── httpd.conf

│   │   │   ├── neutron-server.service

│   │   │   ├── policy.json

│   │   │   ├── tftpboot_map-file

│   │   │   └── xinetdd_tftp

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── auth.yml

│   │   │   ├── config_httpd.yml

│   │   │   ├── config_ipxe.yml

│   │   │   ├── config_neutron_compute.yml

│   │   │   ├── config_neutron_server.yml

│   │   │   ├── config_nova.yml

│   │   │   ├── config.yml

│   │   │   ├── customize.yml

│   │   │   ├── db_sync.yml

│   │   │   ├── db.yml

│   │   │   ├── ha_nova_serialproxy.yml

│   │   │   ├── ha.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   ├── start_httpd.yml

│   │   │   ├── start_nova.yml

│   │   │   ├── start_xinetd.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       ├── ironic.conf.j2

│   │       ├── ml2_conf_genericswitch.ini.j2

│   │       └── nova.conf.j2

│   ├── ironic_inspector

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── files

│   │   │   ├── map-file

│   │   │   └── tftp

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── site.yml

│   │   ├── tasks

│   │   │   ├── auth.yml

│   │   │   ├── config_dnsmasq.yml

│   │   │   ├── config_pxe.yml

│   │   │   ├── config.yml

│   │   │   ├── db_sync.yml

│   │   │   ├── db.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       ├── dnsmasq.conf.j2

│   │       ├── inspector.conf.j2

│   │       └── pxelinux.cfg.j2

│   ├── keystone

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── files

│   │   │   ├── mpm_prefork.conf

│   │   │   └── policy.json

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── config_cluster.yml

│   │   │   ├── config_single.yml

│   │   │   ├── config.yml

│   │   │   ├── customize.yml

│   │   │   ├── db_sync.yml

│   │   │   ├── db.yml

│   │   │   ├── ha.yml

│   │   │   ├── httpd.yml

│   │   │   ├── init_fernet.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   └── pre_install.yml

│   │   └── templates

│   │       ├── keystone.conf.j2

│   │       ├── openrc.sh.j2

│   │       └── wsgi-keystone.conf.j2

│   ├── mariadb

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── files

│   │   │   ├── excluded_patterns.txt

│   │   │   ├── galera_new_cluster

│   │   │   ├── server_manager.sh

│   │   │   ├── system.conf

│   │   │   ├── week_report

│   │   │   └── week_report.tar.gz

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── cluster_backup.yml

│   │   │   ├── cluster_init.yml

│   │   │   ├── cluster_monitor.yml

│   │   │   ├── config.yml

│   │   │   ├── data_init.yml

│   │   │   ├── ha.yml

│   │   │   ├── hostname.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   └── pre_install.yml

│   │   └── templates

│   │       ├── binlog_backup_node.sh.j2

│   │       ├── clustercheck.j2

│   │       ├── database_user_reinit.sh.j2

│   │       ├── db_user_rollback.sh.j2

│   │       ├── disk_uuid_mount.sh.j2

│   │       ├── fpmmm.conf.js.j2

│   │       ├── mariadbcheck.j2

│   │       ├── my.cnf.j2

│   │       ├── mysql_backup.sh.j2

│   │       ├── php.ini.j2

│   │       ├── rsync_tmbackup.sh.j2

│   │       ├── status_check.sh.j2

│   │       └── user_privage_check.py.j2

│   ├── memcached

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── config.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       └── memcached.j2

│   ├── mysql

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── files

│   │   │   └── system.conf

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── cluster_init.yml

│   │   │   ├── config.yml

│   │   │   ├── data_init.yml

│   │   │   ├── ha.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       ├── checkMySQL.py.j2

│   │       ├── database_user_reinit.sh.j2

│   │       ├── db_user_rollback.sh.j2

│   │       ├── disk_uuid_mount.sh.j2

│   │       ├── keepalived.conf.j2

│   │       ├── master_slave.sql.j2

│   │       ├── my.cnf.j2

│   │       ├── mysql.conf.j2

│   │       ├── mysql.service.j2

│   │       └── user_privage_check.py.j2

│   ├── neutron_compute

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── files

│   │   │   ├── dhcp_agent.ini

│   │   │   ├── dnsmasq-neutron.conf

│   │   │   └── nginx-namespace

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── site.yml

│   │   ├── tasks

│   │   │   ├── config.yml

│   │   │   ├── fwaas.yml

│   │   │   ├── install.yml

│   │   │   ├── main.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       ├── l3_agent_ini.j2

│   │       ├── metadata_agent_ini.j2

│   │       ├── ml2_conf_vmware_dvs.ini.j2

│   │       ├── neutron_conf.j2

│   │       ├── nginx.conf.j2

│   │       └── openvswitch_agent_ini.j2

│   ├── neutron_controller

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── site.yml

│   │   ├── tasks

│   │   │   ├── auth.yml

│   │   │   ├── config.yml

│   │   │   ├── customize.yml

│   │   │   ├── db_sync.yml

│   │   │   ├── db.yml

│   │   │   ├── fwaas.yml

│   │   │   ├── ha.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       ├── ml2_conf_ini.j2

│   │       └── neutron_conf.j2

│   ├── nova_compute

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── site.yml

│   │   ├── tasks

│   │   │   ├── config.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   ├── pre_install.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       ├── nova.conf.j2

│   │       └── secret.xml.j2

│   ├── nova_controller

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── files

│   │   │   └── policy.json

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── auth.yml

│   │   │   ├── config.yml

│   │   │   ├── customize.yml

│   │   │   ├── db_sync.yml

│   │   │   ├── db.yml

│   │   │   ├── ha.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       ├── 00-nova-placement-api.conf.j2

│   │       └── nova.conf.j2

│   ├── nova_novncproxy

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── config.yml

│   │   │   ├── ha.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       └── nova.conf.j2

│   ├── ntp

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── site.yml

│   │   ├── tasks

│   │   │   ├── config.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       └── ntp.conf.j2

│   ├── rabbitmq

│   │   ├── defaults

│   │   │   └── main.yml

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── meta

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── add_user.yml

│   │   │   ├── config.yml

│   │   │   ├── create_cluster.yml

│   │   │   ├── install.yml

│   │   │   ├── iptables.yml

│   │   │   ├── main.yml

│   │   │   ├── plugin.yml

│   │   │   ├── pre_install.yml

│   │   │   └── start.yml

│   │   └── templates

│   │       ├── rabbitmq.config.j2

│   │       └── rabbitmq-env.conf.j2

│   └── system_init

│       ├── defaults

│       │   └── main.yml

│       ├── files

│       │   ├── logrotate.conf

│       │   └── sshd_config

│       ├── handlers

│       │   └── main.yml

│       ├── tasks

│       │   ├── add_user.yml

│       │   ├── base.yml

│       │   ├── dns_config.yml

│       │   ├── history_config.yml

│       │   ├── hostname.yml

│       │   ├── install_package.yml

│       │   ├── iptables.yml

│       │   ├── limits_config.yml

│       │   ├── local_fact.yml

│       │   ├── logrotate.yml

│       │   ├── main.yml

│       │   ├── optimize_users_and_groups.yml

│       │   ├── reboot.yml

│       │   ├── repo_config.yml

│       │   ├── selinux_disable.yml

│       │   ├── sshd_config.yml

│       │   └── sysctl_config.yml

│       └── templates

│           ├── cty.repo

│           ├── interfaces.fact.j2

│           ├── resolv.conf.j2

│           └── vcpu.fact.j2

└── tmp

    ├── ceph.client.cinder-backup.keyring

    ├── ceph.client.cinder.keyring

    ├── ceph.client.glance.keyring

    ├── ceph.conf

    ├── client.cinder.key

    └── README

猜你喜欢

转载自blog.csdn.net/weixin_38753143/article/details/95563097