def init_parser(self): # create parser for CLI options super(PlaybookCLI, self).init_parser( usage="%prog [options] playbook.yml [playbook2 ...]", desc="Runs Ansible playbooks, executing the defined tasks on the targeted hosts.") opt_help.add_connect_options(self.parser) opt_help.add_meta_options(self.parser) opt_help.add_runas_options(self.parser) opt_help.add_subset_options(self.parser) opt_help.add_check_options(self.parser) opt_help.add_inventory_options(self.parser) opt_help.add_runtask_options(self.parser) opt_help.add_vault_options(self.parser) opt_help.add_fork_options(self.parser) opt_help.add_module_options(self.parser) # ansible playbook specific opts self.parser.add_argument('--list-tasks', dest='listtasks', action='store_true', help="list all tasks that would be executed") self.parser.add_argument('--list-tags', dest='listtags', action='store_true', help="list all available tags") self.parser.add_argument('--step', dest='step', action='store_true', help="one-step-at-a-time: confirm each task before running") self.parser.add_argument('--start-at-task', dest='start_at_task', help="start the playbook at the task matching this name") self.parser.add_argument('args', help='Playbook(s)', metavar='playbook', nargs='+')
def init_parser(self): ''' create an options parser for bin/ansible ''' super(PullCLI, self).init_parser( usage='%prog -U <repository> [options] [<playbook.yml>]', desc="pulls playbooks from a VCS repo and executes them for the local host") # Do not add check_options as there's a conflict with --checkout/-C opt_help.add_connect_options(self.parser) opt_help.add_vault_options(self.parser) opt_help.add_runtask_options(self.parser) opt_help.add_subset_options(self.parser) opt_help.add_inventory_options(self.parser) opt_help.add_module_options(self.parser) opt_help.add_runas_prompt_options(self.parser) self.parser.add_argument('args', help='Playbook(s)', metavar='playbook.yml', nargs='*') # options unique to pull self.parser.add_argument('--purge', default=False, action='store_true', help='purge checkout after playbook run') self.parser.add_argument('-o', '--only-if-changed', dest='ifchanged', default=False, action='store_true', help='only run the playbook if the repository has been updated') self.parser.add_argument('-s', '--sleep', dest='sleep', default=None, help='sleep for random interval (between 0 and n number of seconds) before starting. ' 'This is a useful way to disperse git requests') self.parser.add_argument('-f', '--force', dest='force', default=False, action='store_true', help='run the playbook even if the repository could not be updated') self.parser.add_argument('-d', '--directory', dest='dest', default=None, help='absolute path of repository checkout directory (relative paths are not supported)') self.parser.add_argument('-U', '--url', dest='url', default=None, help='URL of the playbook repository') self.parser.add_argument('--full', dest='fullclone', action='store_true', help='Do a full clone, instead of a shallow one.') self.parser.add_argument('-C', '--checkout', dest='checkout', help='branch/tag/commit to checkout. Defaults to behavior of repository module.') self.parser.add_argument('--accept-host-key', default=False, dest='accept_host_key', action='store_true', help='adds the hostkey for the repo url if not already added') self.parser.add_argument('-m', '--module-name', dest='module_name', default=self.DEFAULT_REPO_TYPE, help='Repository module name, which ansible will use to check out the repo. Choices are %s. Default is %s.' % (self.REPO_CHOICES, self.DEFAULT_REPO_TYPE)) self.parser.add_argument('--verify-commit', dest='verify', default=False, action='store_true', help='verify GPG signature of checked out commit, if it fails abort running the playbook. ' 'This needs the corresponding VCS module to support such an operation') self.parser.add_argument('--clean', dest='clean', default=False, action='store_true', help='modified files in the working repository will be discarded') self.parser.add_argument('--track-subs', dest='tracksubs', default=False, action='store_true', help='submodules will track the latest changes. This is equivalent to specifying the --remote flag to git submodule update') # add a subset of the check_opts flag group manually, as the full set's # shortcodes conflict with above --checkout/-C self.parser.add_argument("--check", default=False, dest='check', action='store_true', help="don't make any changes; instead, try to predict some of the changes that may occur") self.parser.add_argument("--diff", default=C.DIFF_ALWAYS, dest='diff', action='store_true', help="when changing (small) files and templates, show the differences in those files; works great with --check")
def parser(): parser = opt_help.create_base_parser('testparser') opt_help.add_runas_options(parser) opt_help.add_meta_options(parser) opt_help.add_runtask_options(parser) opt_help.add_vault_options(parser) opt_help.add_async_options(parser) opt_help.add_connect_options(parser) opt_help.add_subset_options(parser) opt_help.add_check_options(parser) opt_help.add_inventory_options(parser) return parser
def _add_my_options(self): """ Add some of my options to the parser :return: """ self.parser.prog = __prog__ self.parser.add_argument( "-i", "--inventory", dest="inventory", action="append", help="specify inventory host path or comma separated host list.", ) self.parser.add_argument( "--include-role-tasks", dest="include_role_tasks", action="store_true", default=False, help="Include the tasks of the role in the graph.", ) self.parser.add_argument( "-s", "--save-dot-file", dest="save_dot_file", action="store_true", default=False, help="Save the dot file used to generate the graph.", ) self.parser.add_argument( "--view", action="store_true", default=False, help= "Automatically open the resulting SVG file with your system’s default viewer application for the file type", ) self.parser.add_argument( "-o", "--output-file-name", dest="output_filename", help= "Output filename without the '.svg' extension. Default: <playbook>.svg", ) self.parser.add_argument( "--open-protocol-handler", dest="open_protocol_handler", choices=list(OPEN_PROTOCOL_HANDLERS.keys()), default="default", help= """The protocol to use to open the nodes when double-clicking on them in your SVG viewer. Your SVG viewer must support double-click and Javascript. The supported values are 'default', 'vscode' and 'custom'. For 'default', the URL will be the path to the file or folders. When using a browser, it will open or download them. For 'vscode', the folders and files will be open with VSCode. For 'custom', you need to set a custom format with --open-protocol-custom-formats. """, ) self.parser.add_argument( "--open-protocol-custom-formats", dest="open_protocol_custom_formats", default=None, help= """The custom formats to use as URLs for the nodes in the graph. Required if --open-protocol-handler is set to custom. You should provide a JSON formatted string like: {"file": "", "folder": ""}. Example: If you want to open folders (roles) inside the browser and files (tasks) in vscode, set this to '{"file": "vscode://file/{path}:{line}:{column}", "folder": "{path}"}' """, ) self.parser.add_argument( "--group-roles-by-name", action="store_true", default=False, help= "When rendering the graph, only a single role will be display for all roles having the same names.", ) self.parser.add_argument( "--version", action="version", version= f"{__prog__} {__version__} (with ansible {ansible_version})", ) self.parser.add_argument( "playbook_filenames", help="Playbook(s) to graph", metavar="playbooks", nargs="+", ) # Use ansible helper to add some default options also option_helpers.add_subset_options(self.parser) option_helpers.add_vault_options(self.parser) option_helpers.add_runtask_options(self.parser)