Exemplo n.º 1
0
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
Exemplo n.º 2
0
    def init_parser(self):

        # create parser for CLI options
        super(PlaybookCLI, self).init_parser(
            usage="%prog [options] playbook.yml [playbook2 ...]",
            desc=
            "Runs Assible 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)

        # assible 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='+')
Exemplo n.º 3
0
    def init_parser(self):
        ''' create an options parser for bin/assible '''
        super(AdHocCLI, self).init_parser(
            usage='%prog <host-pattern> [options]',
            desc="Define and run a single task 'playbook' against"
            " a set of hosts",
            epilog="Some modules do not make sense in Ad-Hoc (include,"
            " meta, etc)")

        opt_help.add_runas_options(self.parser)
        opt_help.add_inventory_options(self.parser)
        opt_help.add_async_options(self.parser)
        opt_help.add_output_options(self.parser)
        opt_help.add_connect_options(self.parser)
        opt_help.add_check_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)
        opt_help.add_basedir_options(self.parser)

        # options unique to assible ad-hoc
        self.parser.add_argument('-a',
                                 '--args',
                                 dest='module_args',
                                 help="module arguments",
                                 default=C.DEFAULT_MODULE_ARGS)
        self.parser.add_argument('-m',
                                 '--module-name',
                                 dest='module_name',
                                 help="module name to execute (default=%s)" %
                                 C.DEFAULT_MODULE_NAME,
                                 default=C.DEFAULT_MODULE_NAME)
        self.parser.add_argument('args',
                                 metavar='pattern',
                                 help='host pattern')
Exemplo n.º 4
0
    def init_parser(self):
        ''' create an options parser for bin/assible '''

        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='directory to checkout repository to')
        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 assible 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"
        )
Exemplo n.º 5
0
    def init_parser(self):
        super(InventoryCLI, self).init_parser(
            usage='usage: %prog [options] [host|group]',
            epilog=
            'Show Assible inventory information, by default it uses the inventory script JSON format'
        )

        opt_help.add_inventory_options(self.parser)
        opt_help.add_vault_options(self.parser)
        opt_help.add_basedir_options(self.parser)
        opt_help.add_runtask_options(self.parser)

        # remove unused default options
        self.parser.add_argument('-l',
                                 '--limit',
                                 help=argparse.SUPPRESS,
                                 action=opt_help.UnrecognizedArgument,
                                 nargs='?')
        self.parser.add_argument('--list-hosts',
                                 help=argparse.SUPPRESS,
                                 action=opt_help.UnrecognizedArgument)

        self.parser.add_argument('args', metavar='host|group', nargs='?')

        # Actions
        action_group = self.parser.add_argument_group(
            "Actions",
            "One of following must be used on invocation, ONLY ONE!")
        action_group.add_argument(
            "--list",
            action="store_true",
            default=False,
            dest='list',
            help='Output all hosts info, works as inventory script')
        action_group.add_argument(
            "--host",
            action="store",
            default=None,
            dest='host',
            help='Output specific host info, works as inventory script')
        action_group.add_argument(
            "--graph",
            action="store_true",
            default=False,
            dest='graph',
            help=
            'create inventory graph, if supplying pattern it must be a valid group name'
        )
        self.parser.add_argument_group(action_group)

        # graph
        self.parser.add_argument(
            "-y",
            "--yaml",
            action="store_true",
            default=False,
            dest='yaml',
            help='Use YAML format instead of default JSON, ignored for --graph'
        )
        self.parser.add_argument(
            '--toml',
            action='store_true',
            default=False,
            dest='toml',
            help='Use TOML format instead of default JSON, ignored for --graph'
        )
        self.parser.add_argument(
            "--vars",
            action="store_true",
            default=False,
            dest='show_vars',
            help='Add vars to graph display, ignored unless used with --graph')

        # list
        self.parser.add_argument(
            "--export",
            action="store_true",
            default=C.INVENTORY_EXPORT,
            dest='export',
            help=
            "When doing an --list, represent in a way that is optimized for export,"
            "not as an accurate representation of how Assible has processed it"
        )
        self.parser.add_argument(
            '--output',
            default=None,
            dest='output_file',
            help=
            "When doing --list, send the inventory to a file instead of to the screen"
        )