{"id":283147,"date":"2016-12-28T01:45:03","date_gmt":"2016-12-27T22:45:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=283147"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=283147","title":{"rendered":"\u041e\u043f\u044b\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f Infrastructure-as-Code \u0432 VMware. \u0427\u0430\u0441\u0442\u044c 1.1: \u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0c6\/62c\/ae3\/0c662cae34ce0999065ceada1246399e.png\" alt=\"image\"\/><\/p>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e, \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c!<\/p>\n<p>  \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habrahabr.ru\/post\/317188\/\">\u0441\u0435\u0440\u0438\u0438<\/a> \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043e\u0431 \u043e\u043f\u044b\u0442\u0435, \u0441\u044b\u043d\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u0442\u0440\u0443\u0434\u043d\u044b\u0445, \u0438 \u043e\u0431\u0435\u0449\u0430\u043b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0441 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 Powershell \u0441\u043a\u0440\u0438\u043f\u0442\u0430.<br \/>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0435\u043d \u0434\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0433\u043e\u0434\u0430, \u0438 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u043e\u043c\u0438\u0442\u044c \u0442\u0435\u0431\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u043c\u0438, \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u00ab\u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c\u00bb \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438 Vmware, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u0444\u0430\u0437\u043e\u0439 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0415\u0441\u043b\u0438 \u0442\u0432\u043e\u0439 \u043f\u0430\u0440\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a \u0447\u0430\u0441\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0442\u043e \u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c. <\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c, \u0447\u0442\u043e \u044f \u0441\u0434\u0435\u043b\u0430\u043b, \u043a\u043e\u0433\u0434\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b <a href=\"https:\/\/habrahabr.ru\/post\/317188\/#comment_9954254\">\u044d\u0442\u043e\u0442<\/a> \u043a\u043e\u043c\u043c\u0435\u043d\u0442, \u044d\u0442\u043e \u043f\u043e\u0431\u0435\u0436\u0430\u043b \u043a \u043d\u0430\u0448\u0438\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0449\u0438\u043a\u0430\u043c \u0441 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u00ab\u043e\u043d\u043e \u043c\u043d\u0435 \u043d\u0430\u0434\u043e, \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434 \u043f\u0438\u043b\u0438\u0442\u044c?\u00bb. \u0420\u0435\u0431\u044f\u0442\u0430 \u043f\u043e\u044f\u0441\u043d\u0438\u043b\u0438, \u0447\u0442\u043e Vcloud \u044d\u0442\u043e:<\/p>\n<ul>\n<li>\u0414\u043e\u0440\u043e\u0433\u043e.<\/li>\n<li>\u041e\u043a\u0443\u043f\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0442\u0435\u0431\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u0442\u0430\u0446\u0435\u043d\u0442\u0440\u044b \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0438\u043d\u0435\u043d\u0442\u0430\u0445.<\/li>\n<li>\u041e\u0432\u0435\u04409000 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0438 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a.<\/li>\n<li>\u0414\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435, \u043c\u044b \u0432 AWS \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0435\u043c, \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c.<\/li>\n<\/ul>\n<p>  \u0417\u0430\u0440\u044f\u0434\u0438\u0432\u0448\u0438\u0441\u044c \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u0435\u0439 (\u00ab\u043d\u0430\u043c \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442, \u043a\u0440\u043e\u043c\u0435 \u043d\u0430\u0441 \u0441\u0430\u043c\u0438\u0445\u00bb), \u044f \u043f\u043e\u043b\u0435\u0437 \u0432 \u0434\u0435\u0431\u0440\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0438.<br \/>  \u041d\u0435 \u043f\u043e\u0439\u043c\u0438 \u043c\u0435\u043d\u044f \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u044c \u0432 Ansible \u0448\u0442\u0443\u043a\u0430 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u0430\u044f, \u0434\u0430 \u0438 \u0432\u043e\u043e\u0440\u0443\u0436\u0438\u0432\u0448\u0438\u0441\u044c echo \u0438 sed \u0432 \u043d\u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u00ab\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u00bb, \u043d\u043e \u0437\u0430\u0447\u0435\u043c? <\/p>\n<h3>\u0418\u0449\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442<\/h3>\n<p>  \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430 Github \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <a href=\"https:\/\/github.com\/ansible\/ansible\/tree\/devel\/contrib\/inventory\">contrib<\/a> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u044f: <a href=\"https:\/\/github.com\/ansible\/ansible\/blob\/devel\/contrib\/inventory\/vmware.py\">\u0442\u043e\u0442<\/a> \u0438 <a href=\"https:\/\/github.com\/ansible\/ansible\/blob\/devel\/contrib\/inventory\/vmware_inventory.py\">\u044d\u0442\u043e\u0442<\/a>.<br \/>  \u041d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0435\u0449\u0435 \u043d\u0430\u0448\u0435\u043b\u0441\u044f <a href=\"https:\/\/raymii.org\/s\/software\/Ansible__Dynamic_Inventory_From_VMware_vCenter.html\">\u0442\u0430\u043a\u043e\u0439<\/a> \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u042f \u0435\u0433\u043e \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u043b \u0441\u0440\u0430\u0437\u0443 \u2014 \u043e\u043d \u0442\u0443\u043f\u043e \u0432\u044b\u0433\u0440\u0435\u0431\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043c\u0430\u0448\u0438\u043d\u043e\u043a (\u0431\u0435\u0437 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439), \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e\u043b\u0433\u043e, \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u0432\u0430\u0440\u0435\u0439 \u043d\u0430\u0434\u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0434\u0438\u0442\u044c. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u2014 \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c, \u043d\u043e \u043d\u0435 \u0431\u043e\u043b\u0435\u0435.<\/p>\n<p>  vmware.py \u0442\u043e\u0436\u0435 \u043e\u0442\u043f\u0430\u043b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e\u043b\u0433\u043e \u0434\u0430\u0436\u0435 \u0441 \u043a\u044d\u0448\u0435\u043c (\u043d\u0430 \u043c\u043e\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u043a\u0435 30 \u043c\u0438\u043d\u0443\u0442 \u0431\u0435\u0437 \u043a\u044d\u0448\u0430, \u0438 8 \u0441 \u043a\u044d\u0448\u0435\u043c), \u0434\u0430 \u0438 \u00ab\u0433\u043b\u0443\u0431\u0438\u043d\u0430\u00bb \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0438 \u0442\u043e\u0436\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f.<br \/>  \u0422\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0439 \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b vmware_inventory.py \u2014 \u043e\u043d \u043e\u0447\u0435\u043d\u044c \u0433\u0438\u0431\u043e\u043a, \u0441 \u043a\u044d\u0448\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0438 \u0434\u0430\u0435\u0442 \u043c\u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u043c\u0430\u0448\u0438\u043d\u043a\u0438.<\/p>\n<p>  \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438 \u0434\u043b\u0438\u043d\u043d\u044b\u0439 INI \u0444\u0430\u0439\u043b\u0438\u043a \u2014 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0430\u0440\u0435\u0439.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">vmware_inventory.ini<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># Ansible VMware external inventory script settings  [vmware]  # The resolvable hostname or ip address of the vsphere server=virtualcenter.example.com  # The port for the vsphere API #port=443  # The username with access to the vsphere API username=example\\vmware_reader  # The password for the vsphere API password=supersecurepassword  # Verify the server's SSL certificate validate_certs = False  # Specify the number of seconds to use the inventory cache before it is # considered stale.  If not defined, defaults to 0 seconds. cache_max_age = 86400   # Specify the directory used for storing the inventory cache.  If not defined, # caching will be disabled. cache_path = ~\/.cache\/ansible   # Max object level refers to the level of recursion the script will delve into # the objects returned from pyvomi to find serializable facts. The default  # level of 0 is sufficient for most tasks and will be the most performant.  # Beware that the recursion can exceed python's limit (causing traceback), # cause sluggish script performance and return huge blobs of facts. # If you do not know what you are doing, leave this set to 1. max_object_level=2   # Lower the keynames for facts to make addressing them easier. lower_var_keys=True   # Host alias for objects in the inventory. VMWare allows duplicate VM names # so they can not be considered unique. Use this setting to alter the alias # returned for the hosts. Any atributes for the guest can be used to build  # this alias. The default combines the config name and the config uuid and  # expects that the ansible_host will be set by the host_pattern. alias_pattern={{ config.name }}   # Host pattern is the value set for ansible_host and ansible_ssh_host, which # needs to be a hostname or ipaddress the ansible controlhost can reach. #host_pattern={{ guest.ipaddress }}   # Host filters are a comma separated list of jinja patterns to remove  # non-matching hosts from the final result. # EXAMPLES: #   host_filters={{ config.guestid == 'rhel7_64Guest' }} #   host_filters={{ config.cpuhotremoveenabled != False }},{{ runtime.maxmemoryusage &gt;= 512 }} #   host_filters={{ config.cpuhotremoveenabled != False }},{{ runtime.maxmemoryusage &gt;= 512 }} # The default is only gueststate of 'running' host_filters={{ guest.gueststate == &quot;running&quot; }}   # Groupby patterns enable the user to create groups via any possible jinja # expression. The resulting value will the groupname and the host will be added # to that group. Be careful to not make expressions that simply return True\/False # because those values will become the literal group name. The patterns can be # comma delimited to create as many groups as necessary groupby_patterns={{ guest.guestid }},{{ 'templates' if config.template else 'guests'}}  # The script attempts to recurse into virtualmachine objects and serialize # all available data. The serialization is comprehensive but slow. If the # vcenter environment is large and the desired properties are known, create # a 'properties' section in this config and make an arbitrary list of # key=value settings where the value is a path to a specific property. If  # If this feature is enabled, be sure to fetch every property that is used # in the jinja expressions defined above. For performance tuning, reduce # the number of properties to the smallest amount possible and limit the  # use of properties that are not direct attributes of vim.VirtualMachine #[properties] prop01=name prop04=config.instanceUuid prop05=config.hardware.numCPU prop06=config.template prop07=config.name prop08=guest.hostName prop09=guest.ipAddress prop11=guest.guestState prop12=runtime.maxMemoryUsage<\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044e\u0437\u0435\u0440\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0430\u0440\u0435\u0439. \u041f\u043e \u0441\u0443\u0442\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u043e\u043a, \u0440\u0435\u0441\u0443\u0440\u0441\u043f\u0443\u043b\u043e\u0432, \u043f\u0430\u043f\u043e\u043a \u0438 \u0434\u0430\u0442\u0430\u0441\u0442\u043e\u0440\u043e\u0432. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u0430\u0432 \u043d\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u0438 <b>\u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c<\/b>. Least privilege principle!<\/p>\n<p>  \u0414\u043e\u043f\u043e\u043b\u044c\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u044e:  <\/p>\n<ol>\n<li>\u0421\u0440\u043e\u043a \u0436\u0438\u0437\u043d\u0438 \u043a\u044d\u0448\u0430 (cache_max_age) \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u042f \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b \u043d\u0430 \u0441\u0443\u0442\u043a\u0438, \u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u0430\u0448\u0438\u043d\u043a\u0430, \u043a\u044d\u0448 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f. \u0422\u0430\u043a\u0436\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437 \u0432 \u0441\u0443\u0442\u043a\u0438 \u043d\u043e\u0447\u044c\u044e<\/li>\n<li>\u0413\u043b\u0443\u0431\u0438\u043d\u0443 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438 (max_object_level). \u0414\u0432\u043e\u0439\u043a\u0430 \u0437\u0434\u0435\u0441\u044c \u0441\u0430\u043c\u044b\u0439 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0415\u0429\u0415 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u043c\u0430\u0448\u0438\u043d\u043a\u0435. \u0411\u043e\u043b\u044c\u0448\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u0433\u0440 \u0441 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0430\u043c\u0438 \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0435\u0439. \u041d\u043e \u2014 \u0431\u043e\u043b\u044c\u0448\u0435 json \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430.<\/li>\n<li>\u041f\u0430\u0442\u0442\u0435\u0440\u043d \u043c\u0430\u0448\u0438\u043d\u043a\u0438 (alias_pattern) \u2014 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0434\u0435\u0442 {{ config.name + &#8216;_&#8217; + config.uuid }}, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u0448\u0438\u043d\u043a\u0438 \u043d\u0435\u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u044f \u0443\u0431\u0440\u0430\u043b config.uuid <\/li>\n<li>\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438 (groupby_patterns) \u2014 \u0432\u043e\u0442 \u044d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445. \u0413\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043e\u0442 \u0441\u043b\u043e\u0432\u0430 \u00ab\u0441\u043e\u0432\u0441\u0435\u043c\u00bb. \u0420\u0435\u0441\u0443\u0440\u0441\u043f\u0443\u043b, \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0432\u0430\u0440 \u0432 \u043d\u043e\u0442\u0430\u0445, \u0441\u0435\u0442\u043a\u0430, location, \u0434\u0430\u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u0430\u0441\u0442\u043e\u0440\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0433\u0435\u0441\u0442\u0430\u043c (\u0447\u0438\u0442\u0430\u0439 \u2014 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u041e\u0421)<\/li>\n<\/ol>\n<p>  \u0412\u0441\u044f\u043a\u0438\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0432\u0435\u0449\u0438 \u0442\u0438\u043f\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443, \u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u043f\u0430\u043b \u0432 \u0431\u0435\u0434\u0443 \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u2014 \u043f\u0438\u0448\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<br \/>  \u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c.  <\/p>\n<pre><code class=\"bash\">$ time .\/vmware_inventory.py &gt; fact_from_vm_py.json  real\t27m59.970s user\t8m33.334s sys\t0m7.841s<\/code><\/pre>\n<p>  \u041f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u0431\u0443\u0434\u044c \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u0435\u043d \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043a\u044d\u0448\u0430, \u0430 \u0442\u043e \u043f\u043b\u0435\u0439\u0431\u0443\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0447\u0435\u0440\u0435\u043f\u0430\u0448\u043a\u0438!<br \/>  \u0421 \u043a\u044d\u0448\u0435\u043c \u0432\u0435\u0441\u044c \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u044c \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0440\u0438.<br \/>  \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0432\u044b\u0445\u043b\u043e\u043f \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043e\u0434\u0438\u043d \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0445\u043e\u0441\u0442:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u0430\u043d\u043d\u044b\u0445 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>&quot;edin_host&quot;: {         &quot;resourcepool&quot;: {           &quot;_moId&quot;: &quot;resgroup-14510&quot;,            &quot;name&quot;: &quot;example-BI&quot;         },          &quot;customvalue&quot;: [],          &quot;permission&quot;: [],          &quot;storage&quot;: {           &quot;timestamp&quot;: {             &quot;hour&quot;: 7,              &quot;min&quot;: {},              &quot;max&quot;: {},              &quot;month&quot;: 12,              &quot;second&quot;: 20,              &quot;microsecond&quot;: 859999,              &quot;year&quot;: 2016,              &quot;tzinfo&quot;: {},              &quot;resolution&quot;: {},              &quot;day&quot;: 22,              &quot;minute&quot;: 45           },            &quot;perdatastoreusage&quot;: []         },          &quot;configissue&quot;: [],          &quot;parentvapp&quot;: null,          &quot;tag&quot;: [],          &quot;recenttask&quot;: [],          &quot;resourceconfig&quot;: {           &quot;changeversion&quot;: null,            &quot;lastmodified&quot;: null,            &quot;memoryallocation&quot;: {             &quot;overheadlimit&quot;: 63,              &quot;reservation&quot;: 0,              &quot;limit&quot;: -1,              &quot;shares&quot;: {},              &quot;expandablereservation&quot;: false           },            &quot;cpuallocation&quot;: {             &quot;overheadlimit&quot;: null,              &quot;reservation&quot;: 0,              &quot;limit&quot;: -1,              &quot;shares&quot;: {},              &quot;expandablereservation&quot;: false           },            &quot;entity&quot;: {             &quot;resourcepool&quot;: {               &quot;_moId&quot;: &quot;resgroup-14510&quot;,                &quot;name&quot;: &quot;example-BI&quot;             },              &quot;alarmactionsenabled&quot;: true,              &quot;configissue&quot;: [],              &quot;tag&quot;: [],              &quot;resourceconfig&quot;: {},              &quot;datastore&quot;: [],              &quot;triggeredalarmstate&quot;: [],              &quot;layout&quot;: {},              &quot;guest&quot;: {},              &quot;effectiverole&quot;: [],              &quot;storage&quot;: {},              &quot;layoutex&quot;: {},              &quot;config&quot;: {},              &quot;customvalue&quot;: [],              &quot;permission&quot;: [],              &quot;parentvapp&quot;: null,              &quot;recenttask&quot;: [],              &quot;availablefield&quot;: [],              &quot;overallstatus&quot;: &quot;green&quot;,              &quot;network&quot;: [],              &quot;guestheartbeatstatus&quot;: &quot;green&quot;,              &quot;name&quot;: &quot;edin_host&quot;,              &quot;rootsnapshot&quot;: [],              &quot;configstatus&quot;: &quot;green&quot;,              &quot;value&quot;: [],              &quot;summary&quot;: {},              &quot;capability&quot;: {},              &quot;snapshot&quot;: null,              &quot;runtime&quot;: {}           }         },          &quot;availablefield&quot;: [           {             &quot;fieldinstanceprivileges&quot;: null,              &quot;fielddefprivileges&quot;: null,              &quot;name&quot;: &quot;Service&quot;,              &quot;key&quot;: 101           },            {             &quot;fieldinstanceprivileges&quot;: null,              &quot;fielddefprivileges&quot;: null,              &quot;name&quot;: &quot;Group&quot;,              &quot;key&quot;: 301           },            {             &quot;fieldinstanceprivileges&quot;: null,              &quot;fielddefprivileges&quot;: null,              &quot;name&quot;: &quot;Role&quot;,              &quot;key&quot;: 103           },            {             &quot;fieldinstanceprivileges&quot;: null,              &quot;fielddefprivileges&quot;: null,              &quot;name&quot;: &quot;Owner&quot;,              &quot;key&quot;: 104           },            {             &quot;fieldinstanceprivileges&quot;: null,              &quot;fielddefprivileges&quot;: null,              &quot;name&quot;: &quot;Environment&quot;,              &quot;key&quot;: 102           }         ],          &quot;datastore&quot;: [           {             &quot;_moId&quot;: &quot;datastore-57683&quot;,              &quot;name&quot;: &quot;mydatastore&quot;           }         ],          &quot;summary&quot;: {           &quot;customvalue&quot;: [],            &quot;guest&quot;: {             &quot;toolsstatus&quot;: &quot;toolsOk&quot;,              &quot;toolsversionstatus&quot;: &quot;guestToolsUnmanaged&quot;,              &quot;hostname&quot;: &quot;edin_host.example.com&quot;,              &quot;toolsrunningstatus&quot;: &quot;guestToolsRunning&quot;,              &quot;guestid&quot;: &quot;centos64Guest&quot;,              &quot;ipaddress&quot;: &quot;192.168.1.1&quot;,              &quot;toolsversionstatus2&quot;: &quot;guestToolsUnmanaged&quot;,              &quot;guestfullname&quot;: &quot;CentOS 4\/5\/6\/7 (64-bit)&quot;           },            &quot;config&quot;: {             &quot;memoryreservation&quot;: 0,              &quot;product&quot;: null,              &quot;instanceuuid&quot;: &quot;502c6c2d-8b58-a01c-4ce0-a18e0a65ac3a&quot;,              &quot;name&quot;: &quot;edin_host&quot;,              &quot;numethernetcards&quot;: 1,              &quot;numcpu&quot;: 1,              &quot;installbootrequired&quot;: false,              &quot;guestid&quot;: &quot;centos64Guest&quot;,              &quot;memorysizemb&quot;: 2048,              &quot;vmpathname&quot;: &quot;[mydatastore] edin_host\/edin_host.vmx&quot;,              &quot;template&quot;: false,              &quot;ftinfo&quot;: null,              &quot;uuid&quot;: &quot;422c78f0-7401-3dbc-2790-9708af08bd03&quot;,              &quot;cpureservation&quot;: 0,              &quot;annotation&quot;: null,              &quot;numvirtualdisks&quot;: 2,              &quot;guestfullname&quot;: &quot;CentOS 4\/5\/6\/7 (64-bit)&quot;           },            &quot;storage&quot;: {             &quot;timestamp&quot;: {},              &quot;uncommitted&quot;: 1064,              &quot;unshared&quot;: 85899345920,              &quot;committed&quot;: 88272314106           },            &quot;vm&quot;: {             &quot;resourcepool&quot;: {               &quot;_moId&quot;: &quot;resgroup-14510&quot;,                &quot;name&quot;: &quot;example-BI&quot;             },              &quot;alarmactionsenabled&quot;: true,              &quot;configissue&quot;: [],              &quot;tag&quot;: [],              &quot;resourceconfig&quot;: {},              &quot;datastore&quot;: [],              &quot;triggeredalarmstate&quot;: [],              &quot;layout&quot;: {},              &quot;guest&quot;: {},              &quot;effectiverole&quot;: [],              &quot;storage&quot;: {},              &quot;layoutex&quot;: {},              &quot;config&quot;: {},              &quot;customvalue&quot;: [],              &quot;permission&quot;: [],              &quot;parentvapp&quot;: null,              &quot;recenttask&quot;: [],              &quot;availablefield&quot;: [],              &quot;overallstatus&quot;: &quot;green&quot;,              &quot;network&quot;: [],              &quot;guestheartbeatstatus&quot;: &quot;green&quot;,              &quot;name&quot;: &quot;edin_host&quot;,              &quot;rootsnapshot&quot;: [],              &quot;configstatus&quot;: &quot;green&quot;,              &quot;value&quot;: [],              &quot;summary&quot;: {},              &quot;capability&quot;: {},              &quot;snapshot&quot;: null,              &quot;runtime&quot;: {}           },            &quot;quickstats&quot;: {             &quot;ftsecondarylatency&quot;: -1,              &quot;privatememory&quot;: 1877,              &quot;compressedmemory&quot;: 0,              &quot;consumedoverheadmemory&quot;: 37,              &quot;swappedmemory&quot;: 0,              &quot;ftlatencystatus&quot;: &quot;gray&quot;,              &quot;uptimeseconds&quot;: 1898839,              &quot;ssdswappedmemory&quot;: 0,              &quot;guestheartbeatstatus&quot;: &quot;green&quot;,              &quot;distributedmemoryentitlement&quot;: 602,              &quot;staticcpuentitlement&quot;: 1905,              &quot;balloonedmemory&quot;: 0,              &quot;guestmemoryusage&quot;: 81,              &quot;overallcpuusage&quot;: 0,              &quot;overallcpudemand&quot;: 0,              &quot;staticmemoryentitlement&quot;: 2111,              &quot;ftlogbandwidth&quot;: -1,              &quot;distributedcpuentitlement&quot;: 0,              &quot;sharedmemory&quot;: 47,              &quot;hostmemoryusage&quot;: 1916           },            &quot;runtime&quot;: {             &quot;powerstate&quot;: &quot;poweredOn&quot;,              &quot;featuremask&quot;: [],              &quot;onlinestandby&quot;: false,              &quot;cleanpoweroff&quot;: null,              &quot;featurerequirement&quot;: [],              &quot;question&quot;: null,              &quot;boottime&quot;: {},              &quot;maxmemoryusage&quot;: 2048,              &quot;offlinefeaturerequirement&quot;: [],              &quot;minrequiredevcmodekey&quot;: &quot;intel-sandybridge&quot;,              &quot;toolsinstallermounted&quot;: false,              &quot;suspendinterval&quot;: 0,              &quot;memoryoverhead&quot;: null,              &quot;needsecondaryreason&quot;: null,              &quot;vflashcacheallocation&quot;: 0,              &quot;host&quot;: {},              &quot;maxcpuusage&quot;: 1999,              &quot;device&quot;: [],              &quot;suspendtime&quot;: null,              &quot;recordreplaystate&quot;: &quot;inactive&quot;,              &quot;consolidationneeded&quot;: false,              &quot;connectionstate&quot;: &quot;connected&quot;,              &quot;dasvmprotection&quot;: {},              &quot;faulttolerancestate&quot;: &quot;notConfigured&quot;,              &quot;nummksconnections&quot;: 0           },            &quot;overallstatus&quot;: &quot;green&quot;         },          &quot;overallstatus&quot;: &quot;green&quot;,          &quot;ansible_host&quot;: &quot;192.168.1.1&quot;,          &quot;triggeredalarmstate&quot;: [],          &quot;network&quot;: [           {             &quot;configstatus&quot;: &quot;green&quot;,              &quot;customvalue&quot;: [],              &quot;name&quot;: &quot;bi-acceptatie&quot;,              &quot;effectiverole&quot;: [],              &quot;permission&quot;: [],              &quot;configissue&quot;: [],              &quot;alarmactionsenabled&quot;: true,              &quot;vm&quot;: [],              &quot;value&quot;: [],              &quot;summary&quot;: {},              &quot;host&quot;: [],              &quot;tag&quot;: [],              &quot;recenttask&quot;: [],              &quot;availablefield&quot;: [],              &quot;overallstatus&quot;: &quot;green&quot;,              &quot;triggeredalarmstate&quot;: []           }         ],          &quot;configstatus&quot;: &quot;green&quot;,          &quot;guestheartbeatstatus&quot;: &quot;green&quot;,          &quot;layout&quot;: {           &quot;logfile&quot;: [             &quot;vmware-10.log&quot;,              &quot;vmware-11.log&quot;,              &quot;vmware-12.log&quot;,              &quot;vmware-13.log&quot;,              &quot;vmware-8.log&quot;,              &quot;vmware-9.log&quot;,              &quot;vmware.log&quot;           ],            &quot;configfile&quot;: [             &quot;edin_host.nvram&quot;,              &quot;edin_host.vmsd&quot;           ],            &quot;disk&quot;: [],            &quot;snapshot&quot;: [],            &quot;swapfile&quot;: &quot;[mydatastore] edin_host\/edin_host-60ee652b.vswp&quot;         },          &quot;guest&quot;: {           &quot;appheartbeatstatus&quot;: &quot;appStatusGray&quot;,            &quot;interactiveguestoperationsready&quot;: false,            &quot;toolsversion&quot;: &quot;2147483647&quot;,            &quot;toolsversionstatus&quot;: &quot;guestToolsUnmanaged&quot;,            &quot;toolsrunningstatus&quot;: &quot;guestToolsRunning&quot;,            &quot;ipaddress&quot;: &quot;192.168.1.1&quot;,            &quot;screen&quot;: {             &quot;width&quot;: 1280,              &quot;height&quot;: 768           },            &quot;guestfamily&quot;: &quot;linuxGuest&quot;,            &quot;generationinfo&quot;: [],            &quot;ipstack&quot;: [],            &quot;gueststate&quot;: &quot;running&quot;,            &quot;hostname&quot;: &quot;edin_host.example.com&quot;,            &quot;guestid&quot;: &quot;centos64Guest&quot;,            &quot;toolsstatus&quot;: &quot;toolsOk&quot;,            &quot;net&quot;: [],            &quot;disk&quot;: [],            &quot;appstate&quot;: &quot;none&quot;,            &quot;guestoperationsready&quot;: true,            &quot;toolsversionstatus2&quot;: &quot;guestToolsUnmanaged&quot;,            &quot;guestfullname&quot;: &quot;CentOS 4\/5\/6\/7 (64-bit)&quot;         },          &quot;effectiverole&quot;: [           -2         ],          &quot;rootsnapshot&quot;: [],          &quot;alarmactionsenabled&quot;: true,          &quot;value&quot;: [],          &quot;name&quot;: &quot;edin_host&quot;,          &quot;capability&quot;: {           &quot;quiescedsnapshotssupported&quot;: true,            &quot;cpufeaturemasksupported&quot;: true,            &quot;consolepreferencessupported&quot;: false,            &quot;vpmcsupported&quot;: true,            &quot;featurerequirementsupported&quot;: true,            &quot;snapshotconfigsupported&quot;: true,            &quot;bootoptionssupported&quot;: true,            &quot;changetrackingsupported&quot;: true,            &quot;vmnpivwwnupdatesupported&quot;: true,            &quot;poweredonmonitortypechangesupported&quot;: true,            &quot;nestedhvsupported&quot;: true,            &quot;poweredoffsnapshotssupported&quot;: true,            &quot;settingvideoramsizesupported&quot;: true,            &quot;settingscreenresolutionsupported&quot;: false,            &quot;virtualmmuusagesupported&quot;: true,            &quot;sesparsedisksupported&quot;: true,            &quot;s1acpimanagementsupported&quot;: true,            &quot;reverttosnapshotsupported&quot;: true,            &quot;disksharessupported&quot;: true,            &quot;vmnpivwwndisablesupported&quot;: true,            &quot;disablesnapshotssupported&quot;: false,            &quot;swapplacementsupported&quot;: true,            &quot;bootretryoptionssupported&quot;: true,            &quot;memoryreservationlocksupported&quot;: true,            &quot;recordreplaysupported&quot;: true,            &quot;settingdisplaytopologysupported&quot;: false,            &quot;vmnpivwwnsupported&quot;: true,            &quot;npivwwnonnonrdmvmsupported&quot;: true,            &quot;toolsautoupdatesupported&quot;: false,            &quot;multiplecorespersocketsupported&quot;: true,            &quot;guestautolocksupported&quot;: true,            &quot;multiplesnapshotssupported&quot;: true,            &quot;snapshotoperationssupported&quot;: true,            &quot;toolssynctimesupported&quot;: true,            &quot;hostbasedreplicationsupported&quot;: true,            &quot;locksnapshotssupported&quot;: true,            &quot;memorysnapshotssupported&quot;: true         },          &quot;snapshot&quot;: null,          &quot;ansible_uuid&quot;: &quot;39d641a6-9b9e-4ce0-b1f8-a4e8e38c9743&quot;,          &quot;layoutex&quot;: {           &quot;timestamp&quot;: {             &quot;hour&quot;: 7,              &quot;min&quot;: {},              &quot;max&quot;: {},              &quot;month&quot;: 12,              &quot;second&quot;: 20,              &quot;microsecond&quot;: 860550,              &quot;year&quot;: 2016,              &quot;tzinfo&quot;: {},              &quot;resolution&quot;: {},              &quot;day&quot;: 22,              &quot;minute&quot;: 45           },            &quot;disk&quot;: [],            &quot;snapshot&quot;: [],            &quot;file&quot;: []         },          &quot;runtime&quot;: {           &quot;powerstate&quot;: &quot;poweredOn&quot;,            &quot;featuremask&quot;: [],            &quot;onlinestandby&quot;: false,            &quot;cleanpoweroff&quot;: null,            &quot;featurerequirement&quot;: [],            &quot;question&quot;: null,            &quot;boottime&quot;: {             &quot;hour&quot;: 9,              &quot;min&quot;: {},              &quot;max&quot;: {},              &quot;month&quot;: 11,              &quot;second&quot;: 31,              &quot;microsecond&quot;: 402054,              &quot;year&quot;: 2016,              &quot;tzinfo&quot;: {},              &quot;resolution&quot;: {},              &quot;day&quot;: 30,              &quot;minute&quot;: 42           },            &quot;maxmemoryusage&quot;: 2048,            &quot;offlinefeaturerequirement&quot;: [],            &quot;minrequiredevcmodekey&quot;: &quot;intel-sandybridge&quot;,            &quot;toolsinstallermounted&quot;: false,            &quot;suspendinterval&quot;: 0,            &quot;memoryoverhead&quot;: null,            &quot;needsecondaryreason&quot;: null,            &quot;vflashcacheallocation&quot;: 0,            &quot;host&quot;: {             &quot;alarmactionsenabled&quot;: true,              &quot;configissue&quot;: [],              &quot;vm&quot;: [],              &quot;hardware&quot;: {},              &quot;tag&quot;: [],              &quot;datastore&quot;: [],              &quot;triggeredalarmstate&quot;: [],              &quot;network&quot;: [],              &quot;effectiverole&quot;: [],              &quot;datastorebrowser&quot;: {},              &quot;config&quot;: {},              &quot;customvalue&quot;: [],              &quot;permission&quot;: [],              &quot;systemresources&quot;: {},              &quot;configmanager&quot;: {},              &quot;recenttask&quot;: [],              &quot;availablefield&quot;: [],              &quot;overallstatus&quot;: &quot;green&quot;,              &quot;name&quot;: &quot;esx1.example.com&quot;,              &quot;configstatus&quot;: &quot;green&quot;,              &quot;value&quot;: [],              &quot;summary&quot;: {},              &quot;capability&quot;: {},              &quot;licensableresource&quot;: {},              &quot;runtime&quot;: {}           },            &quot;maxcpuusage&quot;: 1999,            &quot;device&quot;: [],            &quot;suspendtime&quot;: null,            &quot;recordreplaystate&quot;: &quot;inactive&quot;,            &quot;consolidationneeded&quot;: false,            &quot;connectionstate&quot;: &quot;connected&quot;,            &quot;dasvmprotection&quot;: {             &quot;dasprotected&quot;: true           },            &quot;faulttolerancestate&quot;: &quot;notConfigured&quot;,            &quot;nummksconnections&quot;: 0         },          &quot;config&quot;: {           &quot;uuid&quot;: &quot;422c78f0-7401-3dbc-2790-9708af08bd03&quot;,            &quot;alternateguestname&quot;: &quot;&quot;,            &quot;npivonnonrdmdisks&quot;: null,            &quot;instanceuuid&quot;: &quot;502c6c2d-8b58-a01c-4ce0-a18e0a65ac3a&quot;,            &quot;cpuaffinity&quot;: null,            &quot;npivdesirednodewwns&quot;: null,            &quot;memoryhotaddenabled&quot;: true,            &quot;hardware&quot;: {             &quot;virtualich7mpresent&quot;: false,              &quot;numcpu&quot;: 1,              &quot;virtualsmcpresent&quot;: false,              &quot;memorymb&quot;: 2048,              &quot;device&quot;: [],              &quot;numcorespersocket&quot;: 1           },            &quot;vappconfig&quot;: null,            &quot;tools&quot;: {             &quot;beforegueststandby&quot;: true,              &quot;beforeguestreboot&quot;: null,              &quot;beforeguestshutdown&quot;: true,              &quot;toolsupgradepolicy&quot;: &quot;manual&quot;,              &quot;afterresume&quot;: true,              &quot;afterpoweron&quot;: true,              &quot;synctimewithhost&quot;: false,              &quot;lastinstallinfo&quot;: {},              &quot;pendingcustomization&quot;: null,              &quot;toolsversion&quot;: 2147483647           },            &quot;guestfullname&quot;: &quot;CentOS 4\/5\/6\/7 (64-bit)&quot;,            &quot;changeversion&quot;: &quot;2016-11-30T09:42:11.343789Z&quot;,            &quot;defaultpowerops&quot;: {             &quot;defaultresettype&quot;: &quot;soft&quot;,              &quot;defaultsuspendtype&quot;: &quot;hard&quot;,              &quot;suspendtype&quot;: &quot;hard&quot;,              &quot;standbyaction&quot;: &quot;powerOnSuspend&quot;,              &quot;defaultpowerofftype&quot;: &quot;soft&quot;,              &quot;resettype&quot;: &quot;soft&quot;,              &quot;powerofftype&quot;: &quot;soft&quot;           },            &quot;cpuhotremoveenabled&quot;: false,            &quot;vpmcenabled&quot;: false,            &quot;firmware&quot;: &quot;bios&quot;,            &quot;npivworldwidenametype&quot;: null,            &quot;nestedhvenabled&quot;: false,            &quot;version&quot;: &quot;vmx-11&quot;,            &quot;locationid&quot;: &quot;564da59f-ac2b-54e9-c006-84e06f757410&quot;,            &quot;maxmksconnections&quot;: 40,            &quot;template&quot;: false,            &quot;guestid&quot;: &quot;centos64Guest&quot;,            &quot;bootoptions&quot;: {             &quot;enterbiossetup&quot;: false,              &quot;bootorder&quot;: [],              &quot;bootdelay&quot;: 0,              &quot;bootretryenabled&quot;: false,              &quot;bootretrydelay&quot;: 10000           },            &quot;cpufeaturemask&quot;: [],            &quot;hotplugmemorylimit&quot;: 3072,            &quot;npivnodeworldwidename&quot;: [],            &quot;cpuallocation&quot;: {             &quot;overheadlimit&quot;: null,              &quot;reservation&quot;: 0,              &quot;limit&quot;: -1,              &quot;shares&quot;: {},              &quot;expandablereservation&quot;: false           },            &quot;files&quot;: {             &quot;vmpathname&quot;: &quot;[mydatastore] edin_host\/edin_host.vmx&quot;,              &quot;snapshotdirectory&quot;: &quot;[mydatastore] edin_host\/&quot;,              &quot;suspenddirectory&quot;: &quot;[mydatastore] edint_host\/&quot;,              &quot;logdirectory&quot;: &quot;[mydatastore] edin_host\/&quot;           },            &quot;memoryreservationlockedtomax&quot;: false,            &quot;scheduledhardwareupgradeinfo&quot;: {             &quot;fault&quot;: null,              &quot;upgradepolicy&quot;: &quot;never&quot;,              &quot;versionkey&quot;: null,              &quot;scheduledhardwareupgradestatus&quot;: &quot;none&quot;           },            &quot;initialoverhead&quot;: null,            &quot;hotplugmemoryincrementsize&quot;: 128,            &quot;guestautolockenabled&quot;: false,            &quot;latencysensitivity&quot;: {             &quot;sensitivity&quot;: null,              &quot;level&quot;: &quot;normal&quot;           },            &quot;npivtemporarydisabled&quot;: true,            &quot;memoryallocation&quot;: {             &quot;overheadlimit&quot;: 63,              &quot;reservation&quot;: 0,              &quot;limit&quot;: -1,              &quot;shares&quot;: {},              &quot;expandablereservation&quot;: false           },            &quot;ftinfo&quot;: null,            &quot;npivportworldwidename&quot;: [],            &quot;annotation&quot;: null,            &quot;memoryaffinity&quot;: null,            &quot;vassertsenabled&quot;: false,            &quot;datastoreurl&quot;: [],            &quot;changetrackingenabled&quot;: false,            &quot;name&quot;: &quot;edin_host&quot;,            &quot;npivdesiredportwwns&quot;: null,            &quot;vflashcachereservation&quot;: 0,            &quot;extraconfig&quot;: [],            &quot;networkshaper&quot;: null,            &quot;modified&quot;: {             &quot;hour&quot;: 0,              &quot;min&quot;: {},              &quot;max&quot;: {},              &quot;month&quot;: 1,              &quot;second&quot;: 0,              &quot;microsecond&quot;: 0,              &quot;year&quot;: 1970,              &quot;tzinfo&quot;: {},              &quot;resolution&quot;: {},              &quot;day&quot;: 1,              &quot;minute&quot;: 0           },            &quot;consolepreferences&quot;: null,            &quot;swapplacement&quot;: &quot;inherit&quot;,            &quot;flags&quot;: {             &quot;diskuuidenabled&quot;: false,              &quot;snapshotdisabled&quot;: false,              &quot;recordreplayenabled&quot;: false,              &quot;runwithdebuginfo&quot;: false,              &quot;virtualmmuusage&quot;: &quot;automatic&quot;,              &quot;enablelogging&quot;: true,              &quot;snapshotpoweroffbehavior&quot;: &quot;powerOff&quot;,              &quot;snapshotlocked&quot;: false,              &quot;htsharing&quot;: &quot;any&quot;,              &quot;disableacceleration&quot;: false,              &quot;monitortype&quot;: &quot;release&quot;,              &quot;virtualexecusage&quot;: &quot;hvAuto&quot;,              &quot;usetoe&quot;: false           },            &quot;cpuhotaddenabled&quot;: true         },          &quot;ansible_ssh_host&quot;: &quot;192.168.1.1&quot; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0417\u0434\u043e\u0440\u043e\u0432\u043e, \u043f\u0440\u0430\u0432\u0434\u0430? \ud83d\ude42<br \/>  \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0441\u043a\u0430\u0437\u0430\u043b, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f max_object_level, \u0442\u0430\u043a \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0436 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u2014 \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0434\u043e 1. <\/p>\n<h3>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c.<\/h3>\n<p>  \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u043d\u043e \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438: \u043b\u0438\u0431\u043e \u043a\u043b\u0430\u0434\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0432 \u043f\u0430\u043f\u043a\u0443 \u043d\u0430\u0448\u0438\u0445 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0435\u0439, \u043b\u0438\u0431\u043e \u0437\u0430\u0434\u0430\u0435\u043c \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e:  <\/p>\n<pre><code class=\"bash\">ansible all -i \/path\/to\/my\/vmware_inventory.py -m setup<\/code><\/pre>\n<p>  \u0427\u0435\u043c \u044f \u043b\u044e\u0431\u043b\u044e \u043c\u043e\u0434\u0443\u043b\u044c setup \u2014 \u043e\u043d \u043d\u0435 \u0442\u0440\u0443\u0431\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u043c\u0430\u0448\u0438\u043d\u043a\u0430\u043c.<br \/>  \u0414\u0430\u043b\u044c\u0448\u0435 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043f\u0440\u0438\u0447\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0438 \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0439. \u0414\u043b\u044f \u0447\u0438\u0441\u0442\u043e\u0442\u044b \u044d\u0441\u043a\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u044f \u0431\u0443\u0434\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0440\u0435\u0441\u0443\u0440\u0441 \u043f\u0443\u043b\u0443.<br \/>  <i>\u0415\u0441\u043b\u0438 Ansible \u043f\u043e\u0440\u0443\u0433\u0430\u0435\u0442\u0441\u044f, \u0443\u0434\u0430\u043b\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438.<\/i><\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u043e\u043c\u0435\u0440 1.<\/h4>\n<pre><code>- name: example 1   hosts: mail-scanner*   gather_facts: False   tasks:   - name: say the name of the machine     debug:       msg: &quot;Hello from {{ hostvars[inventory_hostname].resourcepool.name }}!&quot; <\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044f \u0431\u0435\u0440\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u044b\u0445 \u0445\u043e\u0441\u0442\u043e\u0432 \u0438 \u0432\u044b\u0432\u043e\u0436\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0432\u0437\u044f\u0442\u0443\u044e \u043d\u0435 \u0438\u0437 Ansible facts, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u044b.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u043e\u043c\u0435\u0440 2.<\/h4>\n<pre><code>--- - name: example nr2   hosts: all   gather_facts: False   vars:     resource_pool: &quot;{{ hostvars[inventory_hostname].resourcepool._moId }}&quot;   tasks:   - name: say hello, if in RP     debug:       msg: &quot;Hello, fron {{ hostvars[inventory_hostname].name }}&quot;     when: resource_pool == &quot;resgroup-1&quot; <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0433\u0440\u044f\u0437\u043d\u044b\u0439 \u0445\u0430\u043a, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u043d\u0435 \u0445\u043e\u0442\u044f\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0431\u043b\u043e\u043a\u0435 when, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u0432\u0435\u0440\u044f\u044e\u0441\u044c. \u0415\u0441\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u043a\u0430 \u0432 \u0440\u0435\u0441\u0443\u0440\u0441 \u043f\u0443\u043b\u0435, Ansible \u0432\u0435\u0440\u043d\u0435\u0442 \u043c\u043d\u0435 \u0435\u0435 \u0438\u043c\u044f.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u043e\u043c\u0435\u0440 3.<\/h4>\n<p>  \u0414\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0432\u044b\u043a\u0440\u0443\u0442\u0430\u0441\u044b \u043c\u043e\u0436\u043d\u043e \u0438 \u0432 \u0440\u043e\u043b\u044f\u0445.<\/p>\n<pre><code>-- - name: example nr3   hosts: centos64Guest   gather_facts: False   vars:     resource_pool: &quot;{{ hostvars[inventory_hostname].resourcepool._moId }}&quot;   roles:   - { role: myrole, when: resource_pool == &quot;resgroup-1&quot; } <\/code><\/pre>\n<p>  \u0414\u043e\u0440\u043e\u0433\u043e\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0442\u0432\u043e\u0435\u0439 \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0435\u0439!<\/p>\n<h3>\u0413\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443.<\/h3>\n<p>  \u0417\u0434\u043e\u0440\u043e\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0432 when, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u0440\u043e\u0431\u0435\u0433\u0430 \u043f\u043e \u0432\u0441\u0435\u043c \u043c\u0430\u0448\u0438\u043d\u0430\u043c \u2014 \u043d\u0430\u043c \u0436\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u044b \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430.<br \/>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u043e\u0438\u0433\u0440\u0430\u0435\u043c \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 groupby_patterns. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0435\u0441\u043b\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 {{ resourcepool.name }} \u0442\u043e \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0440\u0435\u0441\u0443\u0440\u0441 \u043f\u0443\u043b\u0430. \u0413\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 ({{ network.name }}) \u0438\u043b\u0438 \u043f\u043e \u0442\u0430\u0433\u0435 ({{ tag }})<\/p>\n<p>  \u041a\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043b\u0443\u0447\u0448\u0435 \u0440\u0435\u0448\u0430\u0442\u044c \u0443\u0436\u0435 \u0442\u0435\u0431\u0435, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c.<\/p>\n<p>  <i>P.S. \u041a\u0441\u0442\u0430\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u043a\u0443 \u0433\u0440\u0443\u043f\u043f-\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u0438 \u0433\u0440\u0443\u043f\u043f-\u0434\u0435\u0442\u0435\u0439 \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u044d\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 <a href=\"http:\/\/docs.ansible.com\/ansible\/intro_dynamic_inventory.html\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> Ansible (\u043f\u0443\u0441\u0442\u044c \u0438 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 AWS).<\/i><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/318620\/\"> https:\/\/habrahabr.ru\/post\/318620\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0c6\/62c\/ae3\/0c662cae34ce0999065ceada1246399e.png\" alt=\"image\"\/><\/p>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e, \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c!<\/p>\n<p>  \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habrahabr.ru\/post\/317188\/\">\u0441\u0435\u0440\u0438\u0438<\/a> \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043e\u0431 \u043e\u043f\u044b\u0442\u0435, \u0441\u044b\u043d\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u0442\u0440\u0443\u0434\u043d\u044b\u0445, \u0438 \u043e\u0431\u0435\u0449\u0430\u043b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0441 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 Powershell \u0441\u043a\u0440\u0438\u043f\u0442\u0430.<br \/>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0435\u043d \u0434\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0433\u043e\u0434\u0430, \u0438 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u043e\u043c\u0438\u0442\u044c \u0442\u0435\u0431\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u043c\u0438, \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u00ab\u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c\u00bb \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438 Vmware, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u0444\u0430\u0437\u043e\u0439 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0415\u0441\u043b\u0438 \u0442\u0432\u043e\u0439 \u043f\u0430\u0440\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a \u0447\u0430\u0441\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0442\u043e \u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c. <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-283147","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/283147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=283147"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/283147\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=283147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=283147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=283147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}